{"version":3,"file":"agilicus-angular-src-typescript-angular.mjs","sources":["../../../../projects/agilicus/angular/src/typescript-angular/encoder.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/aPIKey.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/aPIKeyIntrospect.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/aPIKeyIntrospectAuthorizationInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resourcePermissionSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/templatePath.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/renderedQueryParameter.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/renderedRule.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hostPermissions.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/token.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/aPIKeyIntrospectResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/aPIKeyOpStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/aPIKeySpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/aPIKeyStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/accessRequests.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userRequestInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/accessRequestsStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/addGroupMemberRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/adminStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnector.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorAuthzStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorBootstrap.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorLocalBind.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorCloudRouting.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fileShareService.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/databaseResource.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/sSHResource.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/desktopResource.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationServiceAssignment.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationService.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorConnectionInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/perInstanceUpstreamStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorDynamicStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorDynamicStatsPublish.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/serviceForwarder.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connectorSecureTransfer.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorInstance.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorInstanceSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorInstanceStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorLocalBindError.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorLocalBindStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorOnDemandRoutingStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorOuterProxyInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorPerShareStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorPerUserStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorPerformanceMetrics.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorProxy.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorProxyRequestStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorProxyRequestStatsDetails.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorProxySpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorProxyStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorProxyStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorQueue.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorQueueResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorQueueSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorQueueStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorRoutingStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorShareStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorSpecProvisioning.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorSpecificStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationServiceStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fileShareServiceStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/serviceForwarderStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorSystemInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorSystemStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/perTunnelStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorTransportStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorTunnelInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorTunneling.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentConnectorUserStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/agentLocalAuthInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/allowRuleCompiled.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/alternateModeSetting.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/alternateModeStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ruleQueryParameter.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/rule.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/role.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationAssignment.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/definition.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/environment.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/application.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationAdditionalContext.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationAuthenticationConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationServiceRoute.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationDynamicConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationMonitoringConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationSecurity.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationServiceCommonStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationServiceLoadBalancing.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationServiceLocation.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connectorRoute.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationServiceRoutingInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationServiceStatsPublish.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationServiceStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationStateSelector.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationSummary.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationSummaryStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationUpstreamConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationUpstreamFormInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationUpstreamIdentityProvider.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/applicationUpstreamValidation.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/appliedConnectorStatsConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/auditAttribute.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/audit.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/auditDestination.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/auditDestinationAuthentication.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/auditDestinationFilter.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/auditDestinationSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/auditEvent.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/auditEventResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/auditWebhookBulkEvent.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/auditWebhookEventsProcessed.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/authAudits.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/authenticationAttribute.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/authenticationDocument.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/authenticationDocumentSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/authenticationDocumentStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/supportRequestAcknowledgement.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/authenticationFederationInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/authzBundle.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/autoCreateStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/baseUpstream.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/baseUpstreams.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingAccount.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingAccountCurrencyMigration.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingAccountCurrencyMigrationSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingAccountCurrencyMigrationStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingAccountMigrationSubscriptionLifecycle.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/licenseConstraint.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingAccountSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingOrgSubscription.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingSubscription.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/featureFlag.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/organisation.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingProduct.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingAccountStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingBalanceTransaction.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingCheckoutSession.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingCustomer.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingOrg.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingOrgSubscriptionBalance.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingSubscriptionUsageOverrideItem.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingOrgSubscriptionSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/feature.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingOrgSubscriptionStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingPortalLink.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingProductPrice.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingProviderSubscriptionStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingSubscriptionCancelDetail.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingSubscriptionNewSubscription.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingUsageRecord.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/billingUsageSummary.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/bulkDeleteLabelledObjectsRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/bulkDeleteLabelledObjectsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/bulkSessionOperationResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/bulkTokenRevoke.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/bulkTokenRevokeResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/bulkUserMetadata.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userRequestUserUpdate.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/bulkUserRequestApproval.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/cORSOrigin.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/cORSSettings.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/cSPDirective.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/cSPSettings.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/cSRReasonEnum.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/catalogueEntry.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/catalogue.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/certSigningReq.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/certSigningReqReissue.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/certSigningReqReissueSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/certSigningReqReissueStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/certSigningReqSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/x509Certificate.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/certSigningReqStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/certificateRevocationProxy.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/certificateTracker.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/certificateTrackerConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/certificateTrackerSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/certificateTrackerStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/certificateTransparencySettings.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/challenge.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hTTPChallengeAction.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/challengeAction.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/challengeActor.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/challengeAnswer.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/challengeAnswerSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/challengeEndpoint.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/challengeSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/challengeStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/cipherDiffieHellmanGroup.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/cipherEncryptionAlgorithm.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/cipherIntegrityAlgorithm.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/clearFileAssociationRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fileAssociation.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fileSummary.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/clearFileAssociationResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/clientInjection.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/cluster.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/clusterConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/clusterSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/combinedResourceRules.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ruleSet.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/combinedResourceRulesStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/combinedRules.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ruleV2.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/combinedRulesStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/combinedUserDetail.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/mFAChallengeMethod.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/combinedUserDetailStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/commonMetadata.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ruleCondition.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/compoundRuleCondition.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/configureConnectorStatsPublishingRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connector.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connectorBaseInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connectorCloudRouting.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/genericFloatMetric.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/genericIntMetric.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connectorDiagnosticStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connectorInstance.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connectorInstanceSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connectorInstanceStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connectorSecureTransferSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connectorSecureTransferStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connectorService.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connectorServiceSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connectorServiceStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connectorSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connectorStaticStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connectorStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connectorStatsMetadata.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connectorStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connectorSystemStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/connectorUpstreamStatsPublish.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/contentTypeOptionsSettings.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/cpuInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/createBillingCheckoutSession.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/createBillingUsageRecords.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/createSessionAndTokenRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/createSessionAndTokenResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/createTokenRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/createUserDataTokenRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/crossOriginEmbedderPolicySettings.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/crossOriginOpenerPolicySettings.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/crossOriginResourcePolicySettings.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/desktopClientConfigItem.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/customDesktopClientConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/databaseResourceSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/databaseResourceStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/databaseResourceStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/deployment.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/deploymentInstance.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/deploymentInstanceInput.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/deploymentInstanceResource.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/deploymentInstanceSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/deploymentResolvedSchema.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/deploymentOutput.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/deploymentParameter.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/deploymentInstanceStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/deploymentSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/deploymentStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/deploymentTemplate.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/deploymentTemplateSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/dereferencedStandaloneRuleTreeNodeChild.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRule.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/dereferencedStandaloneRuleTreeNode.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/desktopClientConfiguration.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/desktopClientGeneratedConfiguration.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/desktopConnectionInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/desktopRemoteApp.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/desktopResourceSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/desktopResourceStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/desktopResourceStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/desktopServerConfiguration.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/desktopServerGeneratedConfiguration.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/icon.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/displayInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/egressGateway.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/encryptedData.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/environmentConfigVar.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/environmentConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/environmentStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/errorMessage.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/extraProcess.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/featureSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/product.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/featureStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/featureTag.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/featureTagSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/featureValue.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fetchInjection.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fileAssociationSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fileAssociationStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fileShareClientConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fileShareClientConfigLinuxConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fileShareClientConfigMacConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fileShareClientConfigWindowsConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/networkMountRuleConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fileShareServiceSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fileShareServiceStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fileTemplate.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fileTemplateArgument.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fileTemplateAssociation.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fileTemplateParameter.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fileTemplateRenderRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fileTemplateResourceInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fileTemplateSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/fileVisibility.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/formInjection.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/formInjectionConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/frameOptionsSettings.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/upstreamUserIdentity.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/groupMember.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userAttribute.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userIdentity.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/group.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/groupData.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/groupReconcileRecord.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/guidMetadata.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hSTSSettings.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hTTPBasicAuth.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hTTPBearerAuth.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hTTPResponseCodeCounter.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hTTPDetailedStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hTTPSecuritySettings.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hTTPSummaryStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/host.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hostBundle.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hostBundleClientConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hostBundleLabel.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hostDestination.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hostBundleSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hostBundleStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hostLabel.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hostLabelSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hostOrg.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hostPrefixRuleCondition.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hostSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/httpRequestExtractor.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/httpRequestExtractorSource.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/httpRule.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/httpRuleCondition.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/httpRuleConditionType.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/licenseDetails.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hypotheticalLicenseDetails.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/hypotheticalLicenseDetailsQuery.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/iconDimensions.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/identityAssertion.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/identityAssertionResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/inboxItem.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/inboxItemMetadata.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/inboxItemSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/inboxItemStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/includedRole.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/inheritableUserConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/x509RootCertificate.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/inlineResponse200.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/interceptorCommand.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/interceptorConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/internalNetworkBind.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/internalNetworkForwarder.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/internalNetworkRouting.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/internalNetworkRoutingInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/invalidPolicyTemplate.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ipsecConnection.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ipsecConnectionIpv4Block.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ipsecConnectionSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ipsecConnector.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ipsecConnectorSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ipsecConnectorStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ipsecGatewayInterface.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/kerberosUpstreamIdentityProvider.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCUpstreamIdentityProvider.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/localAuthUpstreamIdentityProvider.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/issuerClient.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/upstreamGroupMapping.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/managedUpstreamIdentityProvider.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/issuer.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/trustedIssuer.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/issuerStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/issuerUpstream.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/jSInject.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/jSONBodyConstraint.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/kerberosUpstreamConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/kerberosUpstreamStatusKeyTabEntries.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/kerberosUpstreamStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/kernelInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/label.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/labelAssociation.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/labelAssociationStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/labelNavigation.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/labelSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/labelledObject.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/latencyHistogramBuckets.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/latencyHistogram.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/launcher.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/launcherConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resourceMember.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/launcherSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/launcherStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/learningModeSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/license.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/licenseEvaluationContext.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/licenseEvaluationInput.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/licenseSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/licensedFeature.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/licensedProductPrice.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/licensedProductPriceBreakdown.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/licensedProduct.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listAPIKeysResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listAccessRequestsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/timeIntervalMetrics.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listActiveUsersResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listAgentConnectorInstanceResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listAgentConnectorInstanceStatsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listAgentConnectorProxyResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listAgentConnectorResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listApplicationServicesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listApplicationSummaryResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listApplicationsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listAuditDestinationsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listAuditsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listAuthAuditsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listAuthenticationDocumentResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listBillingAccountsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listBillingBalanceTransactions.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listBillingCheckoutSessions.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listBillingOrgSubscriptionsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listBillingUsageRecordsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listCatalogueEntriesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listCataloguesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listCertSigningReqResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listCertificateTrackerResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listClusterResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listCombinedResourceRulesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listCombinedRulesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listCombinedUserDetailsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listConfigsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listConnectorResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listConnectorSecureTransferResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listConnectorServiceResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listConnectorStatsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listDatabaseResourcesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listDeploymentInstances.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listDeploymentTemplates.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listDeployments.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listDesktopResourcesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listDomainsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userRoles.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listElevatedUserRoles.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listEnvironmentConfigsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listFeatureTagsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listFeaturesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listFileAssociationsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listFileShareServicesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listFileTemplatesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listFilesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listGroupsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listGuidMetadataResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listHost.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listHostBundle.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listHostLabel.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listHostOrg.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listInboxItemsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listInboxItemsSummary.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listIpsecConnectorResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listIssuerClientsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listIssuerExtensionsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listIssuerRootsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listIssuerUpstreams.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listJWKS.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listLabelledObjectsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listLabelsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listLaunchersResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listLicenseDetailsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listLicenseEvaluationContextsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listLicensesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/log.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listLogsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listMFAChallengeMethods.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/messageEndpoint.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listMessageEndpointsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/objectCredentialExistenceInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listObjectCredentialExistenceInfoResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/objectCredential.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listObjectCredentialsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/orgUpstreamUserIdentity.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listOrgUpstreamUserIdentitiesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listOrgsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/pointOfPresence.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listPointOfPresencesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/policy.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listPoliciesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/policyRule.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listPolicyRulesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/policyTemplateInstance.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listPolicyTemplateInstancesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/productTableVersion.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listProductTableVersionsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listProductsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/publicFileOrgLink.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listPublicFileOrgLinksResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/region.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listRegionResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/regionalFirewallRule.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/regionalLocation.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listRegionalLocationsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resourceGroup.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listResourceGroupsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resourcePermission.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listResourcePermissionsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resourceRole.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listResourceRolesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resource.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listResourcesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/roleToRuleEntry.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listRoleToRuleEntries.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/roleV2.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listRoles.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listRules.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listSSHResourcesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/secureAgent.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listSecureAgentResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/serviceAccount.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listServiceAccountResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listServiceForwardersResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/session.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listSessionsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRulePolicy.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listStandaloneRulePoliciesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRuleTree.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listStandaloneRuleTreesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listStandaloneRulesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRulesetBundle.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listStandaloneRulesetBundlesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRulesetLabel.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listStandaloneRulesetLabelsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRuleset.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listStandaloneRulesetsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listSupportRequestAcknowledgementsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/supportRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listSupportRequestResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/tOTPEnrollment.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listTOTPEnrollmentResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listTokensResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userMetrics.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listTopUsersResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/trustedCertificate.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listTrustedCertificate.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/trustedCertificateBundle.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listTrustedCertificateBundle.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/trustedCertificateLabel.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listTrustedCertificateLabel.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/trustedCertificateOrg.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listTrustedCertificateOrg.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/upstreamAlias.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listUpstreamAliases.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listUpstreamGroupMapping.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listUpstreamUserIdentitiesResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userApplicationAccessInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listUserApplicationAccessInfoResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userDesktopAccessInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listUserDesktopAccessInfoResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userFileShareAccessInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listUserFileShareAccessInfoResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listUserGuidsResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userLauncherAccessInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listUserLauncherAccessInfoResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userMetadata.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listUserMetadataResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listUserRequestInfoResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userResourceAccessInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listUserResourceAccessInfoResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userRolesForAnOrg.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listUserRolesForAnOrg.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userSSHAccessInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listUserSSHAccessInfoResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/user.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listUsersResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/webAuthNEnrollment.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listWebAuthNEnrollmentResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/wellKnownIssuerInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listWellKnownIssuerInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/listX509CertificateResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/localAuthUpstreamConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/loggedInInjection.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/loginInjection.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/loginSession.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/lookupRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/mFAChallengeAnswer.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/mFAChallengeAnswerResult.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/mFAChallengeMethodSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/mFAChallengeQuestion.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/mFAChallengeQuestionInput.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/mFAChallengeQuestionLoginInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/mFAEnrollmentAnswer.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/mFAEnrollmentAnswerResult.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/mFAEnrollmentQuestion.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/mFAEnrollmentQuestionInput.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/mFAEnrollmentQuestionLoginInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/mFAPolicyTemplate.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/manyOrgTokenIntrospectResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/mapAttributesAnswer.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/mapAttributesAnswerResult.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/mapAttributesQuestion.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/mapAttributesQuestionInput.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/mapAttributesQuestionLoginInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/maxMFAProofRuleCondition.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/memoryInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/messageAction.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/message.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/messageAddress.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/messageEndpointMetadata.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/messageEndpointSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/messageEndpointType.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/messageEndpointTypeWebPush.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/messageEndpointsConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/messageSendItem.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/messageSendRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/messageSendResponseItem.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/messageSendResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/messageTag.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/messagesBulkDeleteRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/messagesBulkDeleteResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/metadataWithId.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/metadataWithIdAllOf.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/metadataWithOnlyId.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/file.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/nTPInternalNetworkRouting.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/networkDetailedStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/networkPortRange.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/networkProtocolCondition.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/networkServiceConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/networkSummaryStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCProxyScope.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCAuthConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCAuthURI.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCAuthPathConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCContentType.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCProxyConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCProxyContentManipulation.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCProxyDomainNameMapping.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCProxyDomainMapping.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCProxyHeaderMapping.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCProxyDomainSubstitution.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCProxyHeader.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCProxyHeaderMatch.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCProxyHeaderName.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCProxyHeaderOverride.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCProxyHeaderReplace.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/uRIParameterRewriteFilter.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCProxyHeaderRewriteFilter.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCProxyHeaderUserConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCProxyStandardHeader.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCProxyUpstreamAuthentication.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCProxyUpstreamConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oIDCProxyUpstreamNTLM.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oSInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/objectCredentialSecrets.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/objectCredentialSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/objectCredentialStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/objectOperStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oneTimeUseActionChallenge.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oneTimeUseActionChallengeAnswerDetail.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oneTimeUseActionChallengeResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/oneTimeUseActionChallengeSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/operationalStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/orgFixup.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/orgInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/orgScopePatchDocument.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/orgUpstreamUserIdentitySpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/orgUpstreamUserIdentityStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/organisationAdmin.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/organisationCapabilities.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/organisationOwnerConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/organisationStateSelector.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/organisationStateStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/organisationStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/organisationSystemOptions.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/pageInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/permittedCrossDomainPoliciesSettings.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/pointOfPresenceRouting.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/pointOfPresenceSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/pointOfPresenceStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/policyCondition.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/policyConfigAuthzBundle.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/policyConfigResourceURLBundle.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/policyGroup.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/policyGroupSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/policyIssuerRef.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/policyRuleSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/policySpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/policyStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/sourceInfoPolicyTemplate.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/simpleResourcePolicyTemplateStructure.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ruleAction.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ruleConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/simpleResourcePolicyTemplate.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/policyTemplate.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/policyTemplateInstanceSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/productSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/productStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/productTable.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/productTableVersionSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/publicFileOrgLinkSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/rawToken.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/reconcileOrgDefaultPolicyRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/reconcileOrgDefaultPolicyResponsePerOrg.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/reconcileOrgDefaultPolicyResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/reconcileSubOrgIssuerRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/referrerPolicySettings.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/refreshTokenRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/regionRouting.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/regionSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/regionStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/remoteAppAccessInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/renderedResourcePermissions.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/renderedRuleBody.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/replaceUserRoleRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resetMFAChallengeMethod.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resetPolicyRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resetUserIdentityRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resourceConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resourceInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resourceRoleSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resourceRuleGroup.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resourceSessionStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resourceSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resourceStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resourceStatsMetadata.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/roleConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resourceURL.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resourceStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resourceTypeEnum.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/resourceURLHostInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/roleSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/roleToRuleEntrySpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/rolesConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/routingRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/sourceSubnetCondition.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/scopeCondition.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/sourceISOCountryCodeCondition.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ruleConditionBase.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ruleMatchCriteria.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ruleMatcher.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ruleMatcherList.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ruleQueryBodyJSON.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ruleQueryBody.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ruleScopeEnum.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ruleSetComponent.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ruleSetNode.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/ruleSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/rulesConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/runtimeStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/sSHResourceSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/sSHResourceStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/sSHResourceStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/secureAgentConnector.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/secureAgentConnectorInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/secureAgentSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/secureAgentStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/serviceAccountResetBody.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/serviceAccountSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/serviceAccountStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/serviceExposeConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/serviceForwarderSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/serviceForwarderStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/serviceHttpConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/serviceProtocolConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/sessionChallenge.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/sessionChallengeMessage.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/sessionChallengeSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/sessionChallengeStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/sessionStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/sessionsSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/shareDetailedStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/shareSummaryStats.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/simpleResourcePolicyTemplateStructureNode.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneObjectConditions.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRulePolicySpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRuleSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRuleTreeRuleRef.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRuleTreeNodeChild.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRuleTreeNode.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRuleTreeRef.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRuleTreeSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRuleTreeStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRulesCleanup.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRulesCleanupSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRulesCleanupStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRulesetBundleLabel.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRulesetBundleSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRulesetInBundle.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRulesetBundleStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRulesetLabelSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRulesetLabelStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRulesetSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/standaloneRulesetStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/statsPublishingConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/statsPublishingConnectorConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/statsPublishingConnectorTypeConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/statsPublishingLevelConfig.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/storageInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/storageRegion.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/subscriptionEvaluationInput.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/subscriptionUsageInput.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/supportRequestAcknowledgementSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/supportRequestAcknowledgementStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/supportRequestMessage.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/supportRequestSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/supportRequestStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/tOTPEnrollmentAnswer.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/tOTPEnrollmentSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/tOTPEnrollmentStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/templateExtraction.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/timeValidity.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/tokenIntrospect.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/tokenIntrospectOptions.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/tokenReissueRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/tokenRevoke.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/tokenValidity.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/trustedCertificateBundleLabel.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/trustedCertificateBundleLabelOperation.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/trustedCertificateBundleSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/trustedCertificateBundleStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/trustedCertificateLabelSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/trustedCertificateLabelStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/trustedCertificateSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/trustedCertificateStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/upstreamAliasMapping.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/upstreamAliasSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/upstreamGroupExcludedEntry.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/upstreamGroupMappingEntry.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/upstreamGroupMappingSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/upstreamGroupReconcile.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/upstreamGroupReconcileResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/upstreamUserIdentitySpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/usageMeasurement.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/usageMetric.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/usageMetrics.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userAccessInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userApplicationAccessInfoStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userAttributes.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userDesktopAccessInfoStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userFileShareAccessInfoStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userIdentityUpdate.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userIdentityUpdateSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userMemberOf.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userMetadataSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userRequestInfoSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userRequestInfoStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userResourceAccessInfoStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userSSHAccessInfoStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userSessionIdentifiers.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userStatusEnum.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/userSummary.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/vNCConnectionInfo.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/vNCPasswordAuthentication.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/webAuthNEnrollmentAnswer.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/webAuthNEnrollmentSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/webAuthNEnrollmentStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/whoamiRequest.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/whoamiResponse.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/workloadConfiguration.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/x509CertificateSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/x509CertificateStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/x509RootCertificateSpec.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/x509RootCertificateStatus.ts","../../../../projects/agilicus/angular/src/typescript-angular/model/xSSSettings.ts","../../../../projects/agilicus/angular/src/typescript-angular/variables.ts","../../../../projects/agilicus/angular/src/typescript-angular/configuration.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/applicationServices.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/applications.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/audits.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/billing.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/catalogues.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/certificates.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/challenges.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/connectors.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/credentials.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/deployments.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/diagnostics.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/features.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/files.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/groups.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/hosts.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/issuers.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/labels.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/launchers.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/licensing.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/lookups.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/messages.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/metrics.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/organisations.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/permissions.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/policy.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/policyConfig.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/policyTemplates.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/regions.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/resources.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/rules.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/tokens.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/trustedCerts.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/users.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/whoami.service.ts","../../../../projects/agilicus/angular/src/typescript-angular/api/api.ts","../../../../projects/agilicus/angular/src/typescript-angular/api.module.ts","../../../../projects/agilicus/angular/src/typescript-angular/agilicus-angular-src-typescript-angular.ts"],"sourcesContent":["import { HttpParameterCodec } from '@angular/common/http';\n\n/**\n * Custom HttpParameterCodec\n * Workaround for https://github.com/angular/angular/issues/18261\n */\nexport class CustomHttpParameterCodec implements HttpParameterCodec {\n    encodeKey(k: string): string {\n        return encodeURIComponent(k);\n    }\n    encodeValue(v: string): string {\n        return encodeURIComponent(v);\n    }\n    decodeKey(k: string): string {\n        return decodeURIComponent(k);\n    }\n    decodeValue(v: string): string {\n        return decodeURIComponent(v);\n    }\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _APIKeySpec, APIKeySpec, APIKeySpecImpl, newAPIKeySpecImpl } from './aPIKeySpec';\nimport { _APIKeyStatus, APIKeyStatus, APIKeyStatusImpl, newAPIKeyStatusImpl } from './aPIKeyStatus';\n\n\n/**\n * A key which may be used to access the system without the need for an explicit login. This essentially serves as a layer of indirection to a normal access token. It can be used for cases where an access token is not user friendly (e.g. systems that only support basic auth). An API Key is scoped in the same fashion as an access token: it has constraints such as an organisation; it is associated to a user; it can be revoked; it can expire, and so on. In order to use an API Key, present it using http basic authentication using your email address as the user name. Note that API Keys are not as secure as short lived access tokens or service account authentication documents, so only use them where necessary. It is best to place an expiry on them so that if they do leak, they are limited in the damage they can do.  The actual key to use in your requests will be present in the status, but only on creation. If you lose the API Key, delete this one and create a new one.  Note that to have this API key represent suborganisations, you must request the \\'urn:agilicus:token_payload:multiorg:true\\' scope. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _APIKey { \n    metadata?: MetadataWithId;\n    spec: APIKeySpec;\n    status?: APIKeyStatus;\n}\n\nexport interface APIKey extends _APIKey {\n    _builtin_original?: _APIKey;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class APIKeyImpl  implements _APIKey {\n    _builtin_original?: _APIKey = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: APIKeySpec ;\n    public status: APIKeyStatus  | undefined ;\n    constructor(base: _APIKey) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAPIKeyImpl(base: _APIKey): APIKeyImpl {\n    return new APIKeyImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _TokenIntrospectOptions, TokenIntrospectOptions, TokenIntrospectOptionsImpl, newTokenIntrospectOptionsImpl } from './tokenIntrospectOptions';\nimport { _APIKeyIntrospectAuthorizationInfo, APIKeyIntrospectAuthorizationInfo, APIKeyIntrospectAuthorizationInfoImpl, newAPIKeyIntrospectAuthorizationInfoImpl } from './aPIKeyIntrospectAuthorizationInfo';\n\n\n/**\n * An API Key to introspection, along with some options to control how to process the results. In order to introspect an API Key you need both the secret representing the API Key as well as the email address of the user who issued the secret key. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _APIKeyIntrospect { \n    api_key_auth_info: APIKeyIntrospectAuthorizationInfo;\n    introspect_options?: TokenIntrospectOptions;\n    /**\n     * Whether or not to allow this APIKey to represent multiple orgs\n     */\n    multi_org?: boolean;\n}\n\nexport interface APIKeyIntrospect extends _APIKeyIntrospect {\n    _builtin_original?: _APIKeyIntrospect;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class APIKeyIntrospectImpl  implements _APIKeyIntrospect {\n    _builtin_original?: _APIKeyIntrospect = undefined;\n    public api_key_auth_info: APIKeyIntrospectAuthorizationInfo ;\n    public introspect_options: TokenIntrospectOptions  | undefined ;\n    public multi_org: boolean  | undefined ;\n    constructor(base: _APIKeyIntrospect) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'api_key_auth_info') >= 0) {\n            this.api_key_auth_info = base.api_key_auth_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'introspect_options') >= 0) {\n            this.introspect_options = base.introspect_options;\n        }\n        if (Object.keys(base).findIndex(key => key === 'multi_org') >= 0) {\n            this.multi_org = base.multi_org;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAPIKeyIntrospectImpl(base: _APIKeyIntrospect): APIKeyIntrospectImpl {\n    return new APIKeyIntrospectImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The information provided by a request using APIKey based authorization.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _APIKeyIntrospectAuthorizationInfo { \n    /**\n     * The APIKey used to authorize the request.\n     */\n    key: string;\n    /**\n     * The username portion of the APIKey authorization. Typically an email address. \n     */\n    username: string;\n}\n\nexport interface APIKeyIntrospectAuthorizationInfo extends _APIKeyIntrospectAuthorizationInfo {\n    _builtin_original?: _APIKeyIntrospectAuthorizationInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class APIKeyIntrospectAuthorizationInfoImpl  implements _APIKeyIntrospectAuthorizationInfo {\n    _builtin_original?: _APIKeyIntrospectAuthorizationInfo = undefined;\n    public key: string ;\n    public username: string ;\n    constructor(base: _APIKeyIntrospectAuthorizationInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'key') >= 0) {\n            this.key = base.key;\n        }\n        if (Object.keys(base).findIndex(key => key === 'username') >= 0) {\n            this.username = base.username;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAPIKeyIntrospectAuthorizationInfoImpl(base: _APIKeyIntrospectAuthorizationInfo): APIKeyIntrospectAuthorizationInfoImpl {\n    return new APIKeyIntrospectAuthorizationInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A ResourcePermissionSpec provides the details of a ResourcePermission\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ResourcePermissionSpec { \n    /**\n     * The unique id of the user which has this permission.\n     */\n    user_id: string;\n    /**\n     * The unique id of the Organisation which the user must be logged in to in order to access the resource with this permission. \n     */\n    org_id: string;\n    /**\n     * The unique id of the resource to which the user is granted access.\n     */\n    resource_id: string;\n    /**\n     * The type of the resource referred to by `resource_id`.\n     */\n    resource_type: ResourcePermissionSpec.ResourceTypeEnum;\n    /**\n     * The unique id of the role assigned to the user.\n     */\n    resource_role_name: string;\n}\n\nexport interface ResourcePermissionSpec extends _ResourcePermissionSpec {\n    _builtin_original?: _ResourcePermissionSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ResourcePermissionSpecImpl  implements _ResourcePermissionSpec {\n    _builtin_original?: _ResourcePermissionSpec = undefined;\n    public user_id: string ;\n    public org_id: string ;\n    public resource_id: string ;\n    public resource_type: ResourcePermissionSpec.ResourceTypeEnum ;\n    public resource_role_name: string ;\n    constructor(base: _ResourcePermissionSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_id') >= 0) {\n            this.resource_id = base.resource_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_type') >= 0) {\n            this.resource_type = base.resource_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_role_name') >= 0) {\n            this.resource_role_name = base.resource_role_name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace ResourcePermissionSpec {\n    export type ResourceTypeEnum = 'fileshare' | 'application_service' | 'desktop' | 'group' | 'application' | 'launcher' | 'service_forwarder' | 'ssh' | 'database';\n    export const ResourceTypeEnum = {\n        fileshare: 'fileshare' as ResourceTypeEnum,\n        application_service: 'application_service' as ResourceTypeEnum,\n        desktop: 'desktop' as ResourceTypeEnum,\n        group: 'group' as ResourceTypeEnum,\n        application: 'application' as ResourceTypeEnum,\n        launcher: 'launcher' as ResourceTypeEnum,\n        service_forwarder: 'service_forwarder' as ResourceTypeEnum,\n        ssh: 'ssh' as ResourceTypeEnum,\n        database: 'database' as ResourceTypeEnum\n    };\n}\n\n\nexport function newResourcePermissionSpecImpl(base: _ResourcePermissionSpec): ResourcePermissionSpecImpl {\n    return new ResourcePermissionSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A template-based path. A templated path uses `{name}` to indicate a portion of the path to extract for further evaluation. E.g. /collection/{guid}/subcollection/{sub_guid} would match any values of guid and sub_guid, and would keep those values for future use in an extractor. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TemplatePath { \n    /**\n     * The path to template on. Indicate a template with {}.\n     */\n    template: string;\n    /**\n     * Whether to match the template as a prefix. I.e. if `prefix` is `true`, then `/collection/{guid}/subcollection/{sub_guid}` would match `/collection/1/subcollection/2/stuff`, whereas if `prefix` is `false`, then it would not match. \n     */\n    prefix: boolean;\n}\n\nexport interface TemplatePath extends _TemplatePath {\n    _builtin_original?: _TemplatePath;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TemplatePathImpl  implements _TemplatePath {\n    _builtin_original?: _TemplatePath = undefined;\n    public template: string ;\n    public prefix: boolean ;\n    constructor(base: _TemplatePath) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'template') >= 0) {\n            this.template = base.template;\n        }\n        if (Object.keys(base).findIndex(key => key === 'prefix') >= 0) {\n            this.prefix = base.prefix;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTemplatePathImpl(base: _TemplatePath): TemplatePathImpl {\n    return new TemplatePathImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Each instance maps a particular query parameter to a set of constraints.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RenderedQueryParameter { \n    /**\n     * The name of the query parameter.\n     */\n    name: string;\n    /**\n     * The given query parameter must exist, and must equal this.\n     */\n    exact_match?: string;\n}\n\nexport interface RenderedQueryParameter extends _RenderedQueryParameter {\n    _builtin_original?: _RenderedQueryParameter;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RenderedQueryParameterImpl  implements _RenderedQueryParameter {\n    _builtin_original?: _RenderedQueryParameter = undefined;\n    public name: string ;\n    public exact_match: string  | undefined ;\n    constructor(base: _RenderedQueryParameter) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'exact_match') >= 0) {\n            this.exact_match = base.exact_match;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newRenderedQueryParameterImpl(base: _RenderedQueryParameter): RenderedQueryParameterImpl {\n    return new RenderedQueryParameterImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourceInfo, ResourceInfo, ResourceInfoImpl, newResourceInfoImpl } from './resourceInfo';\nimport { _TemplatePath, TemplatePath, TemplatePathImpl, newTemplatePathImpl } from './templatePath';\nimport { _RuleMatcherList, RuleMatcherList, RuleMatcherListImpl, newRuleMatcherListImpl } from './ruleMatcherList';\nimport { _RenderedRuleBody, RenderedRuleBody, RenderedRuleBodyImpl, newRenderedRuleBodyImpl } from './renderedRuleBody';\nimport { _RenderedQueryParameter, RenderedQueryParameter, RenderedQueryParameterImpl, newRenderedQueryParameterImpl } from './renderedQueryParameter';\n\n\n/**\n * Rendered rule\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RenderedRule { \n    /**\n     * The HTTP method to allow.\n     */\n    methods?: Array<RenderedRule.MethodsEnum>;\n    /**\n     * regex for HTTP path.\n     */\n    paths?: Array<string>;\n    /**\n     * A list of template paths to match against. The first match in the list will be used. Be careful if they overlap: put more precise paths first in the list. A template can be used to provide information for more precise matchers as configured by http_extractors. \n     */\n    template_paths?: Array<TemplatePath>;\n    /**\n     * A set of constraints on the parameters contained in the query string.\n     */\n    query_parameters?: Array<RenderedQueryParameter>;\n    body?: RenderedRuleBody;\n    resource_info?: ResourceInfo;\n    matchers?: RuleMatcherList;\n    /**\n     * Whether or not to include the query parameter in path operations such as regex matches. If `true`, then the query parameter will be treated as separate from the path. Otherwise, if the path constraints will evaluate all of the query parameters as part of the http path. For example, if a regex path constraint is `^/part1/part2$` and separate_query is true, then an input path of `/part1/part2?key=value` will pass. However, if separate_query is false, it will fail. \n     */\n    separate_query?: boolean;\n}\n\nexport interface RenderedRule extends _RenderedRule {\n    _builtin_original?: _RenderedRule;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RenderedRuleImpl  implements _RenderedRule {\n    _builtin_original?: _RenderedRule = undefined;\n    public methods: Array<RenderedRule.MethodsEnum>  | undefined ;\n    public paths: Array<string>  | undefined ;\n    public template_paths: Array<TemplatePath>  | undefined ;\n    public query_parameters: Array<RenderedQueryParameter>  | undefined ;\n    public body: RenderedRuleBody  | undefined ;\n    public resource_info: ResourceInfo  | undefined ;\n    public matchers: RuleMatcherList  | undefined ;\n    public separate_query: boolean  | undefined ;\n    constructor(base: _RenderedRule) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'methods') >= 0) {\n            this.methods = base.methods;\n        }\n        if (Object.keys(base).findIndex(key => key === 'paths') >= 0) {\n            this.paths = base.paths;\n        }\n        if (Object.keys(base).findIndex(key => key === 'template_paths') >= 0) {\n            if (base.template_paths) {\n                this.template_paths = base.template_paths.map((original) => newTemplatePathImpl(original));\n            } else {\n                this.template_paths = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'query_parameters') >= 0) {\n            if (base.query_parameters) {\n                this.query_parameters = base.query_parameters.map((original) => newRenderedQueryParameterImpl(original));\n            } else {\n                this.query_parameters = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'body') >= 0) {\n            this.body = base.body;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_info') >= 0) {\n            this.resource_info = base.resource_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'matchers') >= 0) {\n            this.matchers = base.matchers;\n        }\n        if (Object.keys(base).findIndex(key => key === 'separate_query') >= 0) {\n            this.separate_query = base.separate_query;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.template_paths !== undefined) {\n            for (const item of this.template_paths) {\n                if (item !== undefined && (item as TemplatePathImpl)._remove_builtin_extensions !== undefined) {\n                    (item as TemplatePathImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.query_parameters !== undefined) {\n            for (const item of this.query_parameters) {\n                if (item !== undefined && (item as RenderedQueryParameterImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RenderedQueryParameterImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace RenderedRule {\n    export type MethodsEnum = 'get' | 'put' | 'post' | 'delete' | 'head' | 'options' | 'connect' | 'trace' | 'patch' | 'copy' | 'lock' | 'mkcol' | 'move' | 'propfind' | 'proppatch' | 'unlock' | 'all';\n    export const MethodsEnum = {\n        get: 'get' as MethodsEnum,\n        put: 'put' as MethodsEnum,\n        post: 'post' as MethodsEnum,\n        delete: 'delete' as MethodsEnum,\n        head: 'head' as MethodsEnum,\n        options: 'options' as MethodsEnum,\n        connect: 'connect' as MethodsEnum,\n        trace: 'trace' as MethodsEnum,\n        patch: 'patch' as MethodsEnum,\n        copy: 'copy' as MethodsEnum,\n        lock: 'lock' as MethodsEnum,\n        mkcol: 'mkcol' as MethodsEnum,\n        move: 'move' as MethodsEnum,\n        propfind: 'propfind' as MethodsEnum,\n        proppatch: 'proppatch' as MethodsEnum,\n        unlock: 'unlock' as MethodsEnum,\n        all: 'all' as MethodsEnum\n    };\n}\n\n\nexport function newRenderedRuleImpl(base: _RenderedRule): RenderedRuleImpl {\n    return new RenderedRuleImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RenderedRule, RenderedRule, RenderedRuleImpl, newRenderedRuleImpl } from './renderedRule';\n\n\n/**\n * Host\\'s properties\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HostPermissions { \n    /**\n     * Upstream hostname\n     */\n    upstream_host?: string;\n    /**\n     * The application id corresponding to this host.\n     */\n    readonly app_id?: string;\n    /**\n     * The organisation id corresponding to the organisation which administers the instance granted permissions by this. \n     */\n    readonly admin_org_id?: string;\n    /**\n     * List of rules\n     */\n    allowed_list?: Array<RenderedRule>;\n}\n\nexport interface HostPermissions extends _HostPermissions {\n    _builtin_original?: _HostPermissions;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HostPermissionsImpl  implements _HostPermissions {\n    _builtin_original?: _HostPermissions = undefined;\n    public upstream_host: string  | undefined ;\n    public readonly app_id: string  | undefined ;\n    public readonly admin_org_id: string  | undefined ;\n    public allowed_list: Array<RenderedRule>  | undefined ;\n    constructor(base: _HostPermissions) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'upstream_host') >= 0) {\n            this.upstream_host = base.upstream_host;\n        }\n        if (Object.keys(base).findIndex(key => key === 'app_id') >= 0) {\n            this.app_id = base.app_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'admin_org_id') >= 0) {\n            this.admin_org_id = base.admin_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'allowed_list') >= 0) {\n            if (base.allowed_list) {\n                this.allowed_list = base.allowed_list.map((original) => newRenderedRuleImpl(original));\n            } else {\n                this.allowed_list = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.allowed_list !== undefined) {\n            for (const item of this.allowed_list) {\n                if (item !== undefined && (item as RenderedRuleImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RenderedRuleImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newHostPermissionsImpl(base: _HostPermissions): HostPermissionsImpl {\n    return new HostPermissionsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourcePermissionSpec, ResourcePermissionSpec, ResourcePermissionSpecImpl, newResourcePermissionSpecImpl } from './resourcePermissionSpec';\nimport { _User, User, UserImpl, newUserImpl } from './user';\nimport { _HostPermissions, HostPermissions, HostPermissionsImpl, newHostPermissionsImpl } from './hostPermissions';\n\n\n/**\n * Object describing the properties of a token\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Token { \n    /**\n     * Unique identifier\n     */\n    readonly sub?: string;\n    /**\n     * User\\'s email address\n     */\n    sub_email?: string;\n    /**\n     * Unique identifier\n     */\n    readonly org?: string;\n    /**\n     * The organisation at the root of the hierachy for which this token provides permissions. \n     */\n    readonly root_org?: string;\n    /**\n     * An associative array mapping an application to a list of roles\n     */\n    roles?: { [key: string]: Array<string> | undefined; };\n    /**\n     * Unique identifier\n     */\n    readonly jti?: string;\n    /**\n     * token issue date\n     */\n    readonly iat?: string;\n    /**\n     * token expiry date\n     */\n    readonly exp?: string;\n    /**\n     * array of valid hosts\n     */\n    hosts?: Array<HostPermissions>;\n    /**\n     * token audience\n     */\n    readonly aud?: Array<string>;\n    /**\n     * Unique identifier\n     */\n    readonly session?: string;\n    /**\n     * The list of scopes associated with this access token. Note that these scopes do not indicate whether that permission has been granted. Whether or not the permission has been granted to this token depends on the scope being associated with the token AND whether the user has that permission to begin with. \n     */\n    scopes?: Array<string>;\n    /**\n     * The id of the user who created this token, if different from the token\\'s sub. \n     */\n    readonly creating_sub?: string;\n    /**\n     * The id of the org of the user who created this token, if that user is different from the token\\'s sub. \n     */\n    readonly creating_org?: string;\n    /**\n     * Whether or not this token was created by a user masquerading as the sub of this token. A masquerading token is constrained in what it can do compared to a normal one: certain operations cannot be performed unless the user has fully authenticated. \n     */\n    readonly masquerading?: boolean;\n    /**\n     * The resource permissions associated with this token. The token determines te permissions by cross referencing the user\\'s permissions with the requested scopes. This list contains only permissions a user has, and only permissions requested by the token\\'s scopes. \n     */\n    resource_permissions?: Array<ResourcePermissionSpec>;\n    user?: User;\n    /**\n     * Time since the epoch, in seconds, when a multifactor challenge associated with this token was last succesfully performed. If not set then no successfully multifactor challenge is associated with this token. \n     */\n    last_mfa_time?: number;\n    /**\n     * This token is specifically a refresh token, and can refresh the specified token jti which is this property. \n     */\n    readonly refresh_token_jti?: string;\n}\n\nexport interface Token extends _Token {\n    _builtin_original?: _Token;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TokenImpl  implements _Token {\n    _builtin_original?: _Token = undefined;\n    public readonly sub: string  | undefined ;\n    public sub_email: string  | undefined ;\n    public readonly org: string  | undefined ;\n    public readonly root_org: string  | undefined ;\n    public roles: { [key: string]: Array<string> | undefined; }  | undefined ;\n    public readonly jti: string  | undefined ;\n    public readonly iat: string  | undefined ;\n    public readonly exp: string  | undefined ;\n    public hosts: Array<HostPermissions>  | undefined ;\n    public readonly aud: Array<string>  | undefined ;\n    public readonly session: string  | undefined ;\n    public scopes: Array<string>  | undefined ;\n    public readonly creating_sub: string  | undefined ;\n    public readonly creating_org: string  | undefined ;\n    public readonly masquerading: boolean  | undefined ;\n    public resource_permissions: Array<ResourcePermissionSpec>  | undefined ;\n    public user: User  | undefined ;\n    public last_mfa_time: number  | undefined ;\n    public readonly refresh_token_jti: string  | undefined ;\n    constructor(base: _Token) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'sub') >= 0) {\n            this.sub = base.sub;\n        }\n        if (Object.keys(base).findIndex(key => key === 'sub_email') >= 0) {\n            this.sub_email = base.sub_email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org') >= 0) {\n            this.org = base.org;\n        }\n        if (Object.keys(base).findIndex(key => key === 'root_org') >= 0) {\n            this.root_org = base.root_org;\n        }\n        if (Object.keys(base).findIndex(key => key === 'roles') >= 0) {\n            this.roles = base.roles;\n        }\n        if (Object.keys(base).findIndex(key => key === 'jti') >= 0) {\n            this.jti = base.jti;\n        }\n        if (Object.keys(base).findIndex(key => key === 'iat') >= 0) {\n            this.iat = base.iat;\n        }\n        if (Object.keys(base).findIndex(key => key === 'exp') >= 0) {\n            this.exp = base.exp;\n        }\n        if (Object.keys(base).findIndex(key => key === 'hosts') >= 0) {\n            if (base.hosts) {\n                this.hosts = base.hosts.map((original) => newHostPermissionsImpl(original));\n            } else {\n                this.hosts = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'aud') >= 0) {\n            this.aud = base.aud;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session') >= 0) {\n            this.session = base.session;\n        }\n        if (Object.keys(base).findIndex(key => key === 'scopes') >= 0) {\n            this.scopes = base.scopes;\n        }\n        if (Object.keys(base).findIndex(key => key === 'creating_sub') >= 0) {\n            this.creating_sub = base.creating_sub;\n        }\n        if (Object.keys(base).findIndex(key => key === 'creating_org') >= 0) {\n            this.creating_org = base.creating_org;\n        }\n        if (Object.keys(base).findIndex(key => key === 'masquerading') >= 0) {\n            this.masquerading = base.masquerading;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_permissions') >= 0) {\n            if (base.resource_permissions) {\n                this.resource_permissions = base.resource_permissions.map((original) => newResourcePermissionSpecImpl(original));\n            } else {\n                this.resource_permissions = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'user') >= 0) {\n            this.user = base.user;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_mfa_time') >= 0) {\n            this.last_mfa_time = base.last_mfa_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'refresh_token_jti') >= 0) {\n            this.refresh_token_jti = base.refresh_token_jti;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.hosts !== undefined) {\n            for (const item of this.hosts) {\n                if (item !== undefined && (item as HostPermissionsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as HostPermissionsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.resource_permissions !== undefined) {\n            for (const item of this.resource_permissions) {\n                if (item !== undefined && (item as ResourcePermissionSpecImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ResourcePermissionSpecImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newTokenImpl(base: _Token): TokenImpl {\n    return new TokenImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Token, Token, TokenImpl, newTokenImpl } from './token';\n\n\n/**\n * Response object for an API Key instrospection.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _APIKeyIntrospectResponse { \n    /**\n     * List of sub org\\'s tokens. Empty if the introspection did not allow for multiple orgs. \n     */\n    sub_org_results: Array<Token>;\n    primary_token: Token;\n    /**\n     * The raw token backing this API Key. This will be passed onwards to upstream endpoints. \n     */\n    raw_token?: string;\n}\n\nexport interface APIKeyIntrospectResponse extends _APIKeyIntrospectResponse {\n    _builtin_original?: _APIKeyIntrospectResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class APIKeyIntrospectResponseImpl  implements _APIKeyIntrospectResponse {\n    _builtin_original?: _APIKeyIntrospectResponse = undefined;\n    public sub_org_results: Array<Token> ;\n    public primary_token: Token ;\n    public raw_token: string  | undefined ;\n    constructor(base: _APIKeyIntrospectResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'sub_org_results') >= 0) {\n            if (base.sub_org_results) {\n                this.sub_org_results = base.sub_org_results.map((original) => newTokenImpl(original));\n            } else {\n                this.sub_org_results = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'primary_token') >= 0) {\n            this.primary_token = base.primary_token;\n        }\n        if (Object.keys(base).findIndex(key => key === 'raw_token') >= 0) {\n            this.raw_token = base.raw_token;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.sub_org_results !== undefined) {\n            for (const item of this.sub_org_results) {\n                if (item !== undefined && (item as TokenImpl)._remove_builtin_extensions !== undefined) {\n                    (item as TokenImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newAPIKeyIntrospectResponseImpl(base: _APIKeyIntrospectResponse): APIKeyIntrospectResponseImpl {\n    return new APIKeyIntrospectResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The operational status of an API Key.  - `expired`: The API Key has expired. It may no longer be used. - `revoked`: The API Key has been revoked. It may not longer be used. - `disabled`: The API Key has been disabled. It may not be used until it is re-enabled. - `active`: The API Key is active. It may be used. \n */\nexport type _APIKeyOpStatus = 'expired' | 'revoked' | 'disabled' | 'active';\nexport type APIKeyOpStatus = _APIKeyOpStatus\n\nexport type APIKeyOpStatusImpl = APIKeyOpStatus;\nexport const APIKeyOpStatus = {\n    expired: 'expired' as APIKeyOpStatus,\n    revoked: 'revoked' as APIKeyOpStatus,\n    disabled: 'disabled' as APIKeyOpStatus,\n    active: 'active' as APIKeyOpStatus\n};\n\nexport function newAPIKeyOpStatusImpl(base: _APIKeyOpStatus): APIKeyOpStatusImpl {\n    return base;\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The definition of an API Key. This controls how it behaves. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _APIKeySpec { \n    /**\n     * Unique identifier\n     */\n    user_id: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * The API Key expiry time in UTC. If ommitted the key does not expire.\n     */\n    expiry?: Date;\n    /**\n     * Unique identifier\n     */\n    session?: string;\n    /**\n     * The list of scopes requested for APIKey. Ex. urn:agilicus:users. An optional scope is specified with an ? at the end. Optional scopes are used when the permission is requested but not required. Ex. urn:agilicus:users?. A non-optional scope will cause creation of this API Key to fail if the user does not have that permission in this org. \n     */\n    scopes?: Array<string>;\n    /**\n     * A meaningful name for the api key. Use this to identify its purpose. The name, if set. An empty string is equivalent to it not being set. \n     */\n    name?: string;\n    /**\n     * Labels the class of APIKeys into which this falls. Use this to organize keys used for similar purposes. \n     */\n    label?: string;\n}\n\nexport interface APIKeySpec extends _APIKeySpec {\n    _builtin_original?: _APIKeySpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class APIKeySpecImpl  implements _APIKeySpec {\n    _builtin_original?: _APIKeySpec = undefined;\n    public user_id: string ;\n    public org_id: string ;\n    public expiry: Date  | undefined ;\n    public session: string  | undefined ;\n    public scopes: Array<string>  | undefined ;\n    public name: string  | undefined ;\n    public label: string  | undefined ;\n    constructor(base: _APIKeySpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'expiry') >= 0) {\n            this.expiry = base.expiry;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session') >= 0) {\n            this.session = base.session;\n        }\n        if (Object.keys(base).findIndex(key => key === 'scopes') >= 0) {\n            this.scopes = base.scopes;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'label') >= 0) {\n            this.label = base.label;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAPIKeySpecImpl(base: _APIKeySpec): APIKeySpecImpl {\n    return new APIKeySpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _APIKeyOpStatus, APIKeyOpStatus, APIKeyOpStatusImpl, newAPIKeyOpStatusImpl } from './aPIKeyOpStatus';\n\n\n/**\n * Runtime information about the APIKey. The jti is the ID of the token corresponding to this API Key. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _APIKeyStatus { \n    /**\n     * The value to use as the password in the basic authentication flow. Note that this value will only be present in the APIKeyStatus when creating the API Key. It is omitted in future requests to prevent it from leaking. Treat this key like any other password: keep it secret; keep it safe. \n     */\n    api_key?: string;\n    /**\n     * Unique identifier\n     */\n    token_id: string;\n    /**\n     * The id of the user who created this APIKey, if different from the APIKey\\'s sub. \n     */\n    creating_sub?: string;\n    /**\n     * The id of the org of the user who created this APIKey, if that user is different from the token\\'s sub. \n     */\n    creating_org?: string;\n    /**\n     * Whether or not this APIKey was created by a user masquerading as the sub of this APIKey. A masquerading APIKey is constrained in what it can do compared to a normal one: certain operations cannot be performed unless the user has fully authenticated. \n     */\n    masquerading?: boolean;\n    oper_status?: APIKeyOpStatus;\n}\n\nexport interface APIKeyStatus extends _APIKeyStatus {\n    _builtin_original?: _APIKeyStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class APIKeyStatusImpl  implements _APIKeyStatus {\n    _builtin_original?: _APIKeyStatus = undefined;\n    public api_key: string  | undefined ;\n    public token_id: string ;\n    public creating_sub: string  | undefined ;\n    public creating_org: string  | undefined ;\n    public masquerading: boolean  | undefined ;\n    public oper_status: APIKeyOpStatus  | undefined ;\n    constructor(base: _APIKeyStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'api_key') >= 0) {\n            this.api_key = base.api_key;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_id') >= 0) {\n            this.token_id = base.token_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'creating_sub') >= 0) {\n            this.creating_sub = base.creating_sub;\n        }\n        if (Object.keys(base).findIndex(key => key === 'creating_org') >= 0) {\n            this.creating_org = base.creating_org;\n        }\n        if (Object.keys(base).findIndex(key => key === 'masquerading') >= 0) {\n            this.masquerading = base.masquerading;\n        }\n        if (Object.keys(base).findIndex(key => key === 'oper_status') >= 0) {\n            this.oper_status = base.oper_status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAPIKeyStatusImpl(base: _APIKeyStatus): APIKeyStatusImpl {\n    return new APIKeyStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AccessRequestsStatus, AccessRequestsStatus, AccessRequestsStatusImpl, newAccessRequestsStatusImpl } from './accessRequestsStatus';\nimport { _MetadataWithOnlyId, MetadataWithOnlyId, MetadataWithOnlyIdImpl, newMetadataWithOnlyIdImpl } from './metadataWithOnlyId';\n\n\n/**\n * Contains information about requests from a pending user or a user with at least one request The id of this object is the user\\'s id. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AccessRequests { \n    metadata: MetadataWithOnlyId;\n    status: AccessRequestsStatus;\n}\n\nexport interface AccessRequests extends _AccessRequests {\n    _builtin_original?: _AccessRequests;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AccessRequestsImpl  implements _AccessRequests {\n    _builtin_original?: _AccessRequests = undefined;\n    public metadata: MetadataWithOnlyId ;\n    public status: AccessRequestsStatus ;\n    constructor(base: _AccessRequests) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAccessRequestsImpl(base: _AccessRequests): AccessRequestsImpl {\n    return new AccessRequestsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _UserRequestInfoStatus, UserRequestInfoStatus, UserRequestInfoStatusImpl, newUserRequestInfoStatusImpl } from './userRequestInfoStatus';\nimport { _UserRequestInfoSpec, UserRequestInfoSpec, UserRequestInfoSpecImpl, newUserRequestInfoSpecImpl } from './userRequestInfoSpec';\n\n\n/**\n * The user request information describes a user\\'s request. A request can be anything that requires an admin to grant permission to the user for access to a resource. For example if a user required access to an application called `app` they could request access via this mechanism. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserRequestInfo { \n    metadata?: MetadataWithId;\n    spec: UserRequestInfoSpec;\n    status?: UserRequestInfoStatus;\n}\n\nexport interface UserRequestInfo extends _UserRequestInfo {\n    _builtin_original?: _UserRequestInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserRequestInfoImpl  implements _UserRequestInfo {\n    _builtin_original?: _UserRequestInfo = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: UserRequestInfoSpec ;\n    public status: UserRequestInfoStatus  | undefined ;\n    constructor(base: _UserRequestInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUserRequestInfoImpl(base: _UserRequestInfo): UserRequestInfoImpl {\n    return new UserRequestInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _User, User, UserImpl, newUserImpl } from './user';\nimport { _UserRequestInfo, UserRequestInfo, UserRequestInfoImpl, newUserRequestInfoImpl } from './userRequestInfo';\n\n\n/**\n * Contains a list of UserRequestInfo objects for a user with pending status or a user with at least one request. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AccessRequestsStatus { \n    user: User;\n    /**\n     * The matching UserRequestInfo objects\n     */\n    user_requests: Array<UserRequestInfo>;\n}\n\nexport interface AccessRequestsStatus extends _AccessRequestsStatus {\n    _builtin_original?: _AccessRequestsStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AccessRequestsStatusImpl  implements _AccessRequestsStatus {\n    _builtin_original?: _AccessRequestsStatus = undefined;\n    public user: User ;\n    public user_requests: Array<UserRequestInfo> ;\n    constructor(base: _AccessRequestsStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user') >= 0) {\n            this.user = base.user;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_requests') >= 0) {\n            if (base.user_requests) {\n                this.user_requests = base.user_requests.map((original) => newUserRequestInfoImpl(original));\n            } else {\n                this.user_requests = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.user_requests !== undefined) {\n            for (const item of this.user_requests) {\n                if (item !== undefined && (item as UserRequestInfoImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserRequestInfoImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newAccessRequestsStatusImpl(base: _AccessRequestsStatus): AccessRequestsStatusImpl {\n    return new AccessRequestsStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Request object to add a new group member\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AddGroupMemberRequest { \n    /**\n     * Unique identifier\n     */\n    id?: string;\n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n    /**\n     * Unique identifier\n     */\n    member_id?: string;\n    /**\n     * Unique identifier\n     */\n    member_org_id?: string;\n    /**\n     * User\\'s email address\n     */\n    email?: string;\n    /**\n     * the upstream issuer associated with this group. This field is set if this user was added to the group via an upstream issuer mapping rule. \n     */\n    upstream_issuer?: string;\n}\n\nexport interface AddGroupMemberRequest extends _AddGroupMemberRequest {\n    _builtin_original?: _AddGroupMemberRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AddGroupMemberRequestImpl  implements _AddGroupMemberRequest {\n    _builtin_original?: _AddGroupMemberRequest = undefined;\n    public id: string  | undefined ;\n    public org_id: string  | undefined ;\n    public member_id: string  | undefined ;\n    public member_org_id: string  | undefined ;\n    public email: string  | undefined ;\n    public upstream_issuer: string  | undefined ;\n    constructor(base: _AddGroupMemberRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'member_id') >= 0) {\n            this.member_id = base.member_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'member_org_id') >= 0) {\n            this.member_org_id = base.member_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'email') >= 0) {\n            this.email = base.email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_issuer') >= 0) {\n            this.upstream_issuer = base.upstream_issuer;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAddGroupMemberRequestImpl(base: _AddGroupMemberRequest): AddGroupMemberRequestImpl {\n    return new AddGroupMemberRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The desired state for an entity. The active state indicates the entity is ready to operate. The disabled state indicates the entity has been disabled. The testing state indicates the entity is in a test mode. The deleted state indicates that this entity has been deleted. \n */\nexport type _AdminStatus = 'active' | 'disabled' | 'testing' | 'deleted';\nexport type AdminStatus = _AdminStatus\n\nexport type AdminStatusImpl = AdminStatus;\nexport const AdminStatus = {\n    active: 'active' as AdminStatus,\n    disabled: 'disabled' as AdminStatus,\n    testing: 'testing' as AdminStatus,\n    deleted: 'deleted' as AdminStatus\n};\n\nexport function newAdminStatusImpl(base: _AdminStatus): AdminStatusImpl {\n    return base;\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _AgentConnectorSpec, AgentConnectorSpec, AgentConnectorSpecImpl, newAgentConnectorSpecImpl } from './agentConnectorSpec';\nimport { _AgentConnectorStatus, AgentConnectorStatus, AgentConnectorStatusImpl, newAgentConnectorStatusImpl } from './agentConnectorStatus';\n\n\n/**\n * A secure agent connector establishes a tunnel between the Agilicus infrastructure and the Secure Agent running on site. Its configuration controls how that link is established, how many connections are maintained and so on. Typically a connector corresponds to an Application running in the Agilicus infrastructure which provides the ingress side of the Secure Agent tunnel. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnector { \n    metadata?: MetadataWithId;\n    spec: AgentConnectorSpec;\n    status?: AgentConnectorStatus;\n}\n\nexport interface AgentConnector extends _AgentConnector {\n    _builtin_original?: _AgentConnector;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorImpl  implements _AgentConnector {\n    _builtin_original?: _AgentConnector = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: AgentConnectorSpec ;\n    public status: AgentConnectorStatus  | undefined ;\n    constructor(base: _AgentConnector) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorImpl(base: _AgentConnector): AgentConnectorImpl {\n    return new AgentConnectorImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Statistics related to the authorization of requests through the AgentConnector. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorAuthzStats { \n    /**\n     * The number of allowed requests. \n     */\n    allowed: number;\n    /**\n     * The authz has been allowed due to the authentication handled by the application. \n     */\n    allowed_app_handled: number;\n    /**\n     * The number of denied requests. \n     */\n    denied: number;\n    /**\n     * The number of redirected requests. \n     */\n    redirected: number;\n    /**\n     * The number of times a failed lookup response was returned that had been cached. \n     */\n    token_cached_failed: number;\n    /**\n     * The number of times a successful lookup response was returned that had been cached. \n     */\n    token_cached_success: number;\n    /**\n     * The number of times a there was a failure parsing the token. This is due to missing claims in the token. \n     */\n    token_parse_failed: number;\n    /**\n     * The number of times a static token was used in a request. \n     */\n    token_static_token: number;\n    /**\n     * The number of times the token JTI was missing. \n     */\n    token_bad_jti: number;\n    /**\n     * The number of times a token introspect was performed and the result was success. \n     */\n    token_lookup_success: number;\n    /**\n     * The number of times a token introspect was performed and the result was not found. \n     */\n    token_lookup_notfound: number;\n    /**\n     * The number of times a token introspect was performed and the result was a bad request \n     */\n    token_lookup_badrequest: number;\n    /**\n     * The number of times a token introspect was performed and the result was a 4xx result that was not a 404, 410 or 400. \n     */\n    token_lookup_4xx_other: number;\n    /**\n     * The number of times a token introspect was performed and the result was an error. \n     */\n    token_lookup_error: number;\n    /**\n     * The number of times a token introspect was performed and the result returned was that the token has been revoked. \n     */\n    token_lookup_revoked: number;\n    /**\n     * The number of times a request was made with basic auth and the base64 decode failed. \n     */\n    token_basic_auth_decode_fail: number;\n    /**\n     * The number of times a request was made with basic auth and the basic auth string was too long. The maximum size permitted is 141 characters. \n     */\n    token_basic_auth_too_long: number;\n    /**\n     * The number of times a request was made with basic auth and the password was missing. \n     */\n    token_basic_auth_no_password: number;\n    /**\n     * The number of times a request was made with basic auth and the successful result was returned from the cache. \n     */\n    token_basic_auth_cached_success: number;\n    /**\n     * The number of times a request was made with basic auth and the failed result was returned from the cache. \n     */\n    token_basic_auth_cached_failed: number;\n    /**\n     * The number of times a request was made with a bearer token that was determined to not originate from Agilicus. If the bearer token is not from Agilicus, the system will attempt to retreive the token from the cookie if available. \n     */\n    token_bearer_not_agilicus: number;\n    /**\n     * The number of times a token introspect retrieved the token from the cookie, rather than the authorization bearer. \n     */\n    token_from_cookie: number;\n    /**\n     * The number of times a token introspect retrieved the token from the authorization bearer, rather than from the cookie. \n     */\n    token_from_bearer: number;\n    /**\n     * The number of times a token introspect retrieved the token from an api key via the basic authorization header. \n     */\n    token_from_api_key: number;\n    /**\n     * The number of requests which were denied because a multifactor challenge was required. \n     */\n    challenge_required?: number;\n    /**\n     * The number of requests which were denied because a multifactor challenge was required and a webpush was initiated successfully. Note that when this is counted, it will also increment challenge_required. \n     */\n    challenge_webpush_initiated?: number;\n    /**\n     * The number of requests which were denied because a multifactor challenge was required and a webpush was attempted but failed. Note that when this is counted, it will also increment the challenge_required. \n     */\n    challenge_webpush_failure?: number;\n    /**\n     * The number of times a response is forged to handle CORS \n     */\n    forged_cors?: number;\n}\n\nexport interface AgentConnectorAuthzStats extends _AgentConnectorAuthzStats {\n    _builtin_original?: _AgentConnectorAuthzStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorAuthzStatsImpl  implements _AgentConnectorAuthzStats {\n    _builtin_original?: _AgentConnectorAuthzStats = undefined;\n    public allowed: number ;\n    public allowed_app_handled: number ;\n    public denied: number ;\n    public redirected: number ;\n    public token_cached_failed: number ;\n    public token_cached_success: number ;\n    public token_parse_failed: number ;\n    public token_static_token: number ;\n    public token_bad_jti: number ;\n    public token_lookup_success: number ;\n    public token_lookup_notfound: number ;\n    public token_lookup_badrequest: number ;\n    public token_lookup_4xx_other: number ;\n    public token_lookup_error: number ;\n    public token_lookup_revoked: number ;\n    public token_basic_auth_decode_fail: number ;\n    public token_basic_auth_too_long: number ;\n    public token_basic_auth_no_password: number ;\n    public token_basic_auth_cached_success: number ;\n    public token_basic_auth_cached_failed: number ;\n    public token_bearer_not_agilicus: number ;\n    public token_from_cookie: number ;\n    public token_from_bearer: number ;\n    public token_from_api_key: number ;\n    public challenge_required: number  | undefined ;\n    public challenge_webpush_initiated: number  | undefined ;\n    public challenge_webpush_failure: number  | undefined ;\n    public forged_cors: number  | undefined ;\n    constructor(base: _AgentConnectorAuthzStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'allowed') >= 0) {\n            this.allowed = base.allowed;\n        }\n        if (Object.keys(base).findIndex(key => key === 'allowed_app_handled') >= 0) {\n            this.allowed_app_handled = base.allowed_app_handled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'denied') >= 0) {\n            this.denied = base.denied;\n        }\n        if (Object.keys(base).findIndex(key => key === 'redirected') >= 0) {\n            this.redirected = base.redirected;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_cached_failed') >= 0) {\n            this.token_cached_failed = base.token_cached_failed;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_cached_success') >= 0) {\n            this.token_cached_success = base.token_cached_success;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_parse_failed') >= 0) {\n            this.token_parse_failed = base.token_parse_failed;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_static_token') >= 0) {\n            this.token_static_token = base.token_static_token;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_bad_jti') >= 0) {\n            this.token_bad_jti = base.token_bad_jti;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_lookup_success') >= 0) {\n            this.token_lookup_success = base.token_lookup_success;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_lookup_notfound') >= 0) {\n            this.token_lookup_notfound = base.token_lookup_notfound;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_lookup_badrequest') >= 0) {\n            this.token_lookup_badrequest = base.token_lookup_badrequest;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_lookup_4xx_other') >= 0) {\n            this.token_lookup_4xx_other = base.token_lookup_4xx_other;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_lookup_error') >= 0) {\n            this.token_lookup_error = base.token_lookup_error;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_lookup_revoked') >= 0) {\n            this.token_lookup_revoked = base.token_lookup_revoked;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_basic_auth_decode_fail') >= 0) {\n            this.token_basic_auth_decode_fail = base.token_basic_auth_decode_fail;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_basic_auth_too_long') >= 0) {\n            this.token_basic_auth_too_long = base.token_basic_auth_too_long;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_basic_auth_no_password') >= 0) {\n            this.token_basic_auth_no_password = base.token_basic_auth_no_password;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_basic_auth_cached_success') >= 0) {\n            this.token_basic_auth_cached_success = base.token_basic_auth_cached_success;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_basic_auth_cached_failed') >= 0) {\n            this.token_basic_auth_cached_failed = base.token_basic_auth_cached_failed;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_bearer_not_agilicus') >= 0) {\n            this.token_bearer_not_agilicus = base.token_bearer_not_agilicus;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_from_cookie') >= 0) {\n            this.token_from_cookie = base.token_from_cookie;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_from_bearer') >= 0) {\n            this.token_from_bearer = base.token_from_bearer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_from_api_key') >= 0) {\n            this.token_from_api_key = base.token_from_api_key;\n        }\n        if (Object.keys(base).findIndex(key => key === 'challenge_required') >= 0) {\n            this.challenge_required = base.challenge_required;\n        }\n        if (Object.keys(base).findIndex(key => key === 'challenge_webpush_initiated') >= 0) {\n            this.challenge_webpush_initiated = base.challenge_webpush_initiated;\n        }\n        if (Object.keys(base).findIndex(key => key === 'challenge_webpush_failure') >= 0) {\n            this.challenge_webpush_failure = base.challenge_webpush_failure;\n        }\n        if (Object.keys(base).findIndex(key => key === 'forged_cors') >= 0) {\n            this.forged_cors = base.forged_cors;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorAuthzStatsImpl(base: _AgentConnectorAuthzStats): AgentConnectorAuthzStatsImpl {\n    return new AgentConnectorAuthzStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Information used to bootstrap an AgentConnector. This includes an API Key with permission to create the connector authentication document, and an optional challenge to respond to when the connector comes online for the first time. This challenge is useful to quickly hint back to the caller that the installation was succesful. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorBootstrap { \n    /**\n     * The secret api key that can be used to bootstrap the connector \n     */\n    api_key: string;\n    /**\n     * The username/email/etc to provide alongside the api key when authenticating using it. \n     */\n    api_key_user: string;\n    /**\n     * The url of the issuer for the connector to log in to \n     */\n    issuer: string;\n    /**\n     * The unique ID of the connector \n     */\n    connector_id: string;\n    /**\n     * The unique ID of the organisation the connector belongs to. \n     */\n    org_id: string;\n    /**\n     * Whether to join a cluster or create a new one. If false or not set, a new cluster is created\n     */\n    join_cluster?: boolean;\n    /**\n     * The ID of a challenge to respond to indicating that the install finished. \n     */\n    response_challenge_id?: string;\n    /**\n     * The code of a challenge to respond to indicating that the install finished. \n     */\n    response_challenge_code?: string;\n    /**\n     * A session-context string for analytics cross-join purposes. \n     */\n    session_context?: string;\n}\n\nexport interface AgentConnectorBootstrap extends _AgentConnectorBootstrap {\n    _builtin_original?: _AgentConnectorBootstrap;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorBootstrapImpl  implements _AgentConnectorBootstrap {\n    _builtin_original?: _AgentConnectorBootstrap = undefined;\n    public api_key: string ;\n    public api_key_user: string ;\n    public issuer: string ;\n    public connector_id: string ;\n    public org_id: string ;\n    public join_cluster: boolean  | undefined ;\n    public response_challenge_id: string  | undefined ;\n    public response_challenge_code: string  | undefined ;\n    public session_context: string  | undefined ;\n    constructor(base: _AgentConnectorBootstrap) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'api_key') >= 0) {\n            this.api_key = base.api_key;\n        }\n        if (Object.keys(base).findIndex(key => key === 'api_key_user') >= 0) {\n            this.api_key_user = base.api_key_user;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer') >= 0) {\n            this.issuer = base.issuer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_id') >= 0) {\n            this.connector_id = base.connector_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'join_cluster') >= 0) {\n            this.join_cluster = base.join_cluster;\n        }\n        if (Object.keys(base).findIndex(key => key === 'response_challenge_id') >= 0) {\n            this.response_challenge_id = base.response_challenge_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'response_challenge_code') >= 0) {\n            this.response_challenge_code = base.response_challenge_code;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session_context') >= 0) {\n            this.session_context = base.session_context;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorBootstrapImpl(base: _AgentConnectorBootstrap): AgentConnectorBootstrapImpl {\n    return new AgentConnectorBootstrapImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configures the agent to bind to an address so that it my serve requests on it. Note that if the bind fails, the agent will try to bind again in a short period of time. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorLocalBind { \n    /**\n     * The host or IP address to bind to. `0.0.0.0` will bind to all IPv4 addresses. `::` will bind to all IPv6 addresses. If set to null this will bind to locally available unicast and anycast IP addresses. Setting it to a hostname will cause the agent to bind to the IP of that host. \n     */\n    bind_host: string | null;\n    /**\n     * The port to bind to. 0 binds to a random, free port chosen by the system. Be careful to choose a port that the agent has permission to bind. E.g. on some systems, low-numbered ports such as 443 require special permissions. \n     */\n    bind_port: number;\n}\n\nexport interface AgentConnectorLocalBind extends _AgentConnectorLocalBind {\n    _builtin_original?: _AgentConnectorLocalBind;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorLocalBindImpl  implements _AgentConnectorLocalBind {\n    _builtin_original?: _AgentConnectorLocalBind = undefined;\n    public bind_host: string | null ;\n    public bind_port: number ;\n    constructor(base: _AgentConnectorLocalBind) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'bind_host') >= 0) {\n            this.bind_host = base.bind_host;\n        }\n        if (Object.keys(base).findIndex(key => key === 'bind_port') >= 0) {\n            this.bind_port = base.bind_port;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorLocalBindImpl(base: _AgentConnectorLocalBind): AgentConnectorLocalBindImpl {\n    return new AgentConnectorLocalBindImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _InternalNetworkRouting, InternalNetworkRouting, InternalNetworkRoutingImpl, newInternalNetworkRoutingImpl } from './internalNetworkRouting';\nimport { _AgentConnectorTunneling, AgentConnectorTunneling, AgentConnectorTunnelingImpl, newAgentConnectorTunnelingImpl } from './agentConnectorTunneling';\nimport { _AgentConnectorLocalBind, AgentConnectorLocalBind, AgentConnectorLocalBindImpl, newAgentConnectorLocalBindImpl } from './agentConnectorLocalBind';\n\n\n/**\n * Configures how an agent exposes resources through itself. For example, configure the local addresses on which the agent will listen for requests for the resources assigned to it. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorCloudRouting { \n    /**\n     * A list describing how to expose resources locally (e.g. not via a tunnel). Each item in this list will configure the agent to bind to a TCP address so that it may serve requests. \n     */\n    local_binds: Array<AgentConnectorLocalBind>;\n    tunneling?: AgentConnectorTunneling;\n    internal_networks?: InternalNetworkRouting;\n}\n\nexport interface AgentConnectorCloudRouting extends _AgentConnectorCloudRouting {\n    _builtin_original?: _AgentConnectorCloudRouting;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorCloudRoutingImpl  implements _AgentConnectorCloudRouting {\n    _builtin_original?: _AgentConnectorCloudRouting = undefined;\n    public local_binds: Array<AgentConnectorLocalBind> ;\n    public tunneling: AgentConnectorTunneling  | undefined ;\n    public internal_networks: InternalNetworkRouting  | undefined ;\n    constructor(base: _AgentConnectorCloudRouting) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'local_binds') >= 0) {\n            if (base.local_binds) {\n                this.local_binds = base.local_binds.map((original) => newAgentConnectorLocalBindImpl(original));\n            } else {\n                this.local_binds = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'tunneling') >= 0) {\n            this.tunneling = base.tunneling;\n        }\n        if (Object.keys(base).findIndex(key => key === 'internal_networks') >= 0) {\n            this.internal_networks = base.internal_networks;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.local_binds !== undefined) {\n            for (const item of this.local_binds) {\n                if (item !== undefined && (item as AgentConnectorLocalBindImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AgentConnectorLocalBindImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newAgentConnectorCloudRoutingImpl(base: _AgentConnectorCloudRouting): AgentConnectorCloudRoutingImpl {\n    return new AgentConnectorCloudRoutingImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _FileShareServiceStatus, FileShareServiceStatus, FileShareServiceStatusImpl, newFileShareServiceStatusImpl } from './fileShareServiceStatus';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _FileShareServiceSpec, FileShareServiceSpec, FileShareServiceSpecImpl, newFileShareServiceSpecImpl } from './fileShareServiceSpec';\n\n\n/**\n * A web-based file share exposed via the Agilicus Cloud. The share will be exposed via a files host with path `/{spec.share_name}`. A file share will create an associated ApplicationService which links it to the chosen Connector.  Multiple connectors may be used to expose file shares. This can be useful if two file shares are on different systems when using a connector with a local component such as an AgentConnector. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FileShareService { \n    metadata?: MetadataWithId;\n    spec: FileShareServiceSpec;\n    status?: FileShareServiceStatus;\n}\n\nexport interface FileShareService extends _FileShareService {\n    _builtin_original?: _FileShareService;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FileShareServiceImpl  implements _FileShareService {\n    _builtin_original?: _FileShareService = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: FileShareServiceSpec ;\n    public status: FileShareServiceStatus  | undefined ;\n    constructor(base: _FileShareService) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFileShareServiceImpl(base: _FileShareService): FileShareServiceImpl {\n    return new FileShareServiceImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _DatabaseResourceSpec, DatabaseResourceSpec, DatabaseResourceSpecImpl, newDatabaseResourceSpecImpl } from './databaseResourceSpec';\nimport { _DatabaseResourceStatus, DatabaseResourceStatus, DatabaseResourceStatusImpl, newDatabaseResourceStatusImpl } from './databaseResourceStatus';\n\n\n/**\n * A Database exposed via the Agilicus Cloud. Access the machine using a client supporting the chosen database protocol. A Connector provides connectivity between the Agilicus Cloud and your database so that you do not have to expose it to the the Internet. The connector performs client authorization using the credentials (e.g. username/password being an API Key) provided by the client, ultimately using the permissions of the associated user to decide whether to allow the connection to the database. The connector authenticates itself to the database by using credentials stored in the Credentials API.  The client connections run over TLS, using a domain name unique to the DatabaseResource for routing. The connector terminates these TLS connections. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DatabaseResource { \n    metadata?: MetadataWithId;\n    spec: DatabaseResourceSpec;\n    status?: DatabaseResourceStatus;\n}\n\nexport interface DatabaseResource extends _DatabaseResource {\n    _builtin_original?: _DatabaseResource;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DatabaseResourceImpl  implements _DatabaseResource {\n    _builtin_original?: _DatabaseResource = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: DatabaseResourceSpec ;\n    public status: DatabaseResourceStatus  | undefined ;\n    constructor(base: _DatabaseResource) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDatabaseResourceImpl(base: _DatabaseResource): DatabaseResourceImpl {\n    return new DatabaseResourceImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _SSHResourceStatus, SSHResourceStatus, SSHResourceStatusImpl, newSSHResourceStatusImpl } from './sSHResourceStatus';\nimport { _SSHResourceSpec, SSHResourceSpec, SSHResourceSpecImpl, newSSHResourceSpecImpl } from './sSHResourceSpec';\n\n\n/**\n * A SSH Terminal exposed via the Agilicus Cloud. Access the machine using a client, supporting SSH protocol. You may expose multiple machines by creating multiple SSHResource objects. A Connector provides connectivity between the Agilicus Cloud and your machine so that you do not have to expose the machine to the Internet. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SSHResource { \n    metadata?: MetadataWithId;\n    spec: SSHResourceSpec;\n    status?: SSHResourceStatus;\n}\n\nexport interface SSHResource extends _SSHResource {\n    _builtin_original?: _SSHResource;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SSHResourceImpl  implements _SSHResource {\n    _builtin_original?: _SSHResource = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: SSHResourceSpec ;\n    public status: SSHResourceStatus  | undefined ;\n    constructor(base: _SSHResource) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSSHResourceImpl(base: _SSHResource): SSHResourceImpl {\n    return new SSHResourceImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _DesktopResourceStatus, DesktopResourceStatus, DesktopResourceStatusImpl, newDesktopResourceStatusImpl } from './desktopResourceStatus';\nimport { _DesktopResourceSpec, DesktopResourceSpec, DesktopResourceSpecImpl, newDesktopResourceSpecImpl } from './desktopResourceSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\n\n\n/**\n * A desktop exposed via the Agilicus Cloud. Access the desktop using a client, supporting a protocol such as the Remote Desktop Protocol, by way of a Desktop Gateway. You may expose multiple desktops by creating multiple DesktopResource objects. A Connector provides connectivity between the Agilicus Cloud and your desktop so that you do not have to expose the desktop to the Internet.  A desktop may actually be a remote application. If a remote_app is defined for a desktop, then launching the desktop will always launch the remote application; it will not be used to connect to the full desktop environment. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DesktopResource { \n    metadata?: MetadataWithId;\n    spec: DesktopResourceSpec;\n    status?: DesktopResourceStatus;\n}\n\nexport interface DesktopResource extends _DesktopResource {\n    _builtin_original?: _DesktopResource;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DesktopResourceImpl  implements _DesktopResource {\n    _builtin_original?: _DesktopResource = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: DesktopResourceSpec ;\n    public status: DesktopResourceStatus  | undefined ;\n    constructor(base: _DesktopResource) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDesktopResourceImpl(base: _DesktopResource): DesktopResourceImpl {\n    return new DesktopResourceImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ApplicationServiceLoadBalancing, ApplicationServiceLoadBalancing, ApplicationServiceLoadBalancingImpl, newApplicationServiceLoadBalancingImpl } from './applicationServiceLoadBalancing';\n\n\n/**\n * An ApplicationServiceAssignment allows an Environment of an Application to access an ApplicationService. Essentially, ApplicationSerivceAssignment models a link between an Environment and an ApplicationService. For example, a collection of these with the same Environment would model the set of ApplicationServices that environment can access. Alternatively, a collection of these with the same ApplicationService would model the set of Environments that can access that ApplicationService. ApplicationServiceAssignments apply to the Organisation of the ApplicationService being assigned. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationServiceAssignment { \n    /**\n     * The identifier of the Application to which this service is being assigned. \n     */\n    app_id: string;\n    /**\n     * The name of the Environment to which this ApplicationService is being assigned. \n     */\n    environment_name: string;\n    /**\n     * The organisation owning the Application to which the ApplicationService is being assigned. \n     */\n    org_id: string;\n    /**\n     * A service can be exposed via the following ways: \\'application\\':     A service assigned to an application will be exposed externally as that application. This     sets up an ingress route that forwards from the applications FQDN to this service. This property     can only be true for one service bound to an application and environment. If the environment     has domain_aliases, those alises would also expose this service. \\'path_prefix\\':     This setting exposes the service as a path prefix to the applications hostname.  The generated     prefix would be constructed as: {service_name}_{port} \\'hostname\\':     exposes the service as a specific hostname(s), as provisioned by the expose_as_hostnames property \\'not_exposed\\':     The service is not externally exposed. \n     */\n    expose_type?: string;\n    /**\n     * If expose_type is set to hostname, this list allows additional hostnames to be used to map to this service. \n     */\n    expose_as_hostnames?: Array<string>;\n    load_balancing?: ApplicationServiceLoadBalancing;\n}\n\nexport interface ApplicationServiceAssignment extends _ApplicationServiceAssignment {\n    _builtin_original?: _ApplicationServiceAssignment;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationServiceAssignmentImpl  implements _ApplicationServiceAssignment {\n    _builtin_original?: _ApplicationServiceAssignment = undefined;\n    public app_id: string ;\n    public environment_name: string ;\n    public org_id: string ;\n    public expose_type: string  | undefined ;\n    public expose_as_hostnames: Array<string>  | undefined ;\n    public load_balancing: ApplicationServiceLoadBalancing  | undefined ;\n    constructor(base: _ApplicationServiceAssignment) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'app_id') >= 0) {\n            this.app_id = base.app_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'environment_name') >= 0) {\n            this.environment_name = base.environment_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'expose_type') >= 0) {\n            this.expose_type = base.expose_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'expose_as_hostnames') >= 0) {\n            this.expose_as_hostnames = base.expose_as_hostnames;\n        }\n        if (Object.keys(base).findIndex(key => key === 'load_balancing') >= 0) {\n            this.load_balancing = base.load_balancing;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newApplicationServiceAssignmentImpl(base: _ApplicationServiceAssignment): ApplicationServiceAssignmentImpl {\n    return new ApplicationServiceAssignmentImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ApplicationServiceStats, ApplicationServiceStats, ApplicationServiceStatsImpl, newApplicationServiceStatsImpl } from './applicationServiceStats';\nimport { _ServiceProtocolConfig, ServiceProtocolConfig, ServiceProtocolConfigImpl, newServiceProtocolConfigImpl } from './serviceProtocolConfig';\nimport { _ApplicationServiceAssignment, ApplicationServiceAssignment, ApplicationServiceAssignmentImpl, newApplicationServiceAssignmentImpl } from './applicationServiceAssignment';\nimport { _NetworkServiceConfig, NetworkServiceConfig, NetworkServiceConfigImpl, newNetworkServiceConfigImpl } from './networkServiceConfig';\nimport { _ResourceConfig, ResourceConfig, ResourceConfigImpl, newResourceConfigImpl } from './resourceConfig';\nimport { _AlternateModeSetting, AlternateModeSetting, AlternateModeSettingImpl, newAlternateModeSettingImpl } from './alternateModeSetting';\nimport { _ApplicationServiceStatus, ApplicationServiceStatus, ApplicationServiceStatusImpl, newApplicationServiceStatusImpl } from './applicationServiceStatus';\n\n\n/**\n * Application service\\'s properties\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationService { \n    /**\n     * Creation time\n     */\n    readonly created?: Date;\n    /**\n     * Unique identifier\n     */\n    readonly id?: string;\n    /**\n     * The name of the service. Services will be selected and assigned using this. This value must be unique within an organisation. \n     */\n    name: string;\n    /**\n     * The organisation which owns this service.\n     */\n    org_id: string;\n    /**\n     * The hostname of the service. Your applications will refer to this service using its hostname. This can also be the IP Address of the service. If the address is an IPv4 Address it will add the IP to the ipv4_addresses field and set the name_resolution to static \n     */\n    hostname?: string;\n    /**\n     * The IPv4 addresses of `hostname` within the data center.\n     */\n    ipv4_addresses?: Array<string>;\n    /**\n     * How to resolve the hostname of the service. If static, then ipv4_address will be used. Otherwise, if dns the Organisation\\'s dns services will be queried. \n     */\n    name_resolution?: ApplicationService.NameResolutionEnum;\n    config?: NetworkServiceConfig;\n    /**\n     * The transport-layer port on which to access the service. exclusiveMinimum: 0 exclusiveMaximum: 65536 \n     */\n    port?: number;\n    /**\n     * The transport-layer protocol over which to communicate with the service. \n     */\n    protocol?: ApplicationService.ProtocolEnum;\n    /**\n     * The Application Environments which have access to this ApplicationService. Manipulate this list to add or remove access to the ApplicationService. \n     */\n    assignments?: Array<ApplicationServiceAssignment>;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n    /**\n     * The type of application service. This refers to how the application connects to the service\n     */\n    service_type?: ApplicationService.ServiceTypeEnum;\n    /**\n     * The protocol carried by this service. This indicates to the Agilicus infrastructure how to interpret the data being transmitted to the service. Different protocols have different subclasses of an ApplicationService used to configure that protocol\\'s details. This field may take on the following values:   - ip: Any upper layer protocols are transparent to the Agilicus infrastructure.     Agilicus does not participate in the protocol.   - fileshare: The service is a fileshare. Agilicus will participate in the file sharing     protocol in order to expose the fileshare to the Internet.   - desktop: The service is a desktop. Agilicus provides a Desktop Gateway allowing users to access     their Desktop without them being directly exposed to the internet. Users connect to this service     through the Desktop Gateway, using a protocol such as the Remote Desktop Protocol. \n     */\n    readonly service_protocol_type?: ApplicationService.ServiceProtocolTypeEnum;\n    /**\n     * Whether Transport Layer Security (TLS) is enabled for this ip service running over tcp. This field has no meaning for non-ip services, or services using a transport protocol other than tcp. \n     */\n    tls_enabled?: boolean;\n    /**\n     * Whether the certificate presented by the Service is verified by the infrastructure. This can be useful when interacting with a test server which may not have a production certificate signed by a public certificate authority. \n     */\n    tls_verify?: boolean;\n    /**\n     * Unique identifier\n     */\n    connector_id?: string;\n    /**\n     * Assign network resource to a specific instance. This instance MUST be within the defined connector_id above. This allows further refinement for assignment, in case a connector is HA, and a service may only traverse one of the instances. \n     */\n    connector_instance_id?: string;\n    protocol_config?: ServiceProtocolConfig;\n    /**\n     * The URI by which this service can be directly accessed. Depending on the type of connector associated with this service, the URI could be public or internal to the Agilicus infrastructure. In both cases, valid credentials proving permission to access this service are necessary to access the service. If this field is empty, then it cannot be accessed directly.. \n     */\n    readonly connection_uri?: string;\n    /**\n     * A list of hosts for which the assigned connector will also forward requests for this application service. \n     */\n    readonly connection_host_aliases?: Array<string>;\n    resource_config?: ResourceConfig;\n    alternate_mode_setting?: AlternateModeSetting;\n    stats?: ApplicationServiceStats;\n    status?: ApplicationServiceStatus;\n    /**\n     * This connector service refers to a connector service name that is bound to a connector_id. For example, \\'audits\\', would refer to the audits service found on a connector for connector to connector audit routing. \n     */\n    readonly connector_service?: string;\n}\n\nexport interface ApplicationService extends _ApplicationService {\n    _builtin_original?: _ApplicationService;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationServiceImpl  implements _ApplicationService {\n    _builtin_original?: _ApplicationService = undefined;\n    public readonly created: Date  | undefined ;\n    public readonly id: string  | undefined ;\n    public name: string ;\n    public org_id: string ;\n    public hostname: string  | undefined ;\n    public ipv4_addresses: Array<string>  | undefined ;\n    public name_resolution: ApplicationService.NameResolutionEnum  | undefined ;\n    public config: NetworkServiceConfig  | undefined ;\n    public port: number  | undefined ;\n    public protocol: ApplicationService.ProtocolEnum  | undefined ;\n    public assignments: Array<ApplicationServiceAssignment>  | undefined ;\n    public readonly updated: Date  | undefined ;\n    public service_type: ApplicationService.ServiceTypeEnum  | undefined ;\n    public readonly service_protocol_type: ApplicationService.ServiceProtocolTypeEnum  | undefined ;\n    public tls_enabled: boolean  | undefined ;\n    public tls_verify: boolean  | undefined ;\n    public connector_id: string  | undefined ;\n    public connector_instance_id: string  | undefined ;\n    public protocol_config: ServiceProtocolConfig  | undefined ;\n    public readonly connection_uri: string  | undefined ;\n    public readonly connection_host_aliases: Array<string>  | undefined ;\n    public resource_config: ResourceConfig  | undefined ;\n    public alternate_mode_setting: AlternateModeSetting  | undefined ;\n    public stats: ApplicationServiceStats  | undefined ;\n    public status: ApplicationServiceStatus  | undefined ;\n    public readonly connector_service: string  | undefined ;\n    constructor(base: _ApplicationService) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'created') >= 0) {\n            this.created = base.created;\n        }\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'hostname') >= 0) {\n            this.hostname = base.hostname;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ipv4_addresses') >= 0) {\n            this.ipv4_addresses = base.ipv4_addresses;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name_resolution') >= 0) {\n            this.name_resolution = base.name_resolution;\n        }\n        if (Object.keys(base).findIndex(key => key === 'config') >= 0) {\n            this.config = base.config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'port') >= 0) {\n            this.port = base.port;\n        }\n        if (Object.keys(base).findIndex(key => key === 'protocol') >= 0) {\n            this.protocol = base.protocol;\n        }\n        if (Object.keys(base).findIndex(key => key === 'assignments') >= 0) {\n            if (base.assignments) {\n                this.assignments = base.assignments.map((original) => newApplicationServiceAssignmentImpl(original));\n            } else {\n                this.assignments = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n        if (Object.keys(base).findIndex(key => key === 'service_type') >= 0) {\n            this.service_type = base.service_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'service_protocol_type') >= 0) {\n            this.service_protocol_type = base.service_protocol_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'tls_enabled') >= 0) {\n            this.tls_enabled = base.tls_enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'tls_verify') >= 0) {\n            this.tls_verify = base.tls_verify;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_id') >= 0) {\n            this.connector_id = base.connector_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_instance_id') >= 0) {\n            this.connector_instance_id = base.connector_instance_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'protocol_config') >= 0) {\n            this.protocol_config = base.protocol_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connection_uri') >= 0) {\n            this.connection_uri = base.connection_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connection_host_aliases') >= 0) {\n            this.connection_host_aliases = base.connection_host_aliases;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_config') >= 0) {\n            this.resource_config = base.resource_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'alternate_mode_setting') >= 0) {\n            this.alternate_mode_setting = base.alternate_mode_setting;\n        }\n        if (Object.keys(base).findIndex(key => key === 'stats') >= 0) {\n            this.stats = base.stats;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_service') >= 0) {\n            this.connector_service = base.connector_service;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.assignments !== undefined) {\n            for (const item of this.assignments) {\n                if (item !== undefined && (item as ApplicationServiceAssignmentImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationServiceAssignmentImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace ApplicationService {\n    export type NameResolutionEnum = 'static' | 'dns';\n    export const NameResolutionEnum = {\n        static: 'static' as NameResolutionEnum,\n        dns: 'dns' as NameResolutionEnum\n    };\n    export type ProtocolEnum = 'tcp';\n    export const ProtocolEnum = {\n        tcp: 'tcp' as ProtocolEnum\n    };\n    export type ServiceTypeEnum = 'vpn' | 'internet' | 'agent' | 'ipsec';\n    export const ServiceTypeEnum = {\n        vpn: 'vpn' as ServiceTypeEnum,\n        internet: 'internet' as ServiceTypeEnum,\n        agent: 'agent' as ServiceTypeEnum,\n        ipsec: 'ipsec' as ServiceTypeEnum\n    };\n    export type ServiceProtocolTypeEnum = 'ip' | 'fileshare' | 'desktop' | 'ssh' | 'database';\n    export const ServiceProtocolTypeEnum = {\n        ip: 'ip' as ServiceProtocolTypeEnum,\n        fileshare: 'fileshare' as ServiceProtocolTypeEnum,\n        desktop: 'desktop' as ServiceProtocolTypeEnum,\n        ssh: 'ssh' as ServiceProtocolTypeEnum,\n        database: 'database' as ServiceProtocolTypeEnum\n    };\n}\n\n\nexport function newApplicationServiceImpl(base: _ApplicationService): ApplicationServiceImpl {\n    return new ApplicationServiceImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ApplicationConfig, ApplicationConfig, ApplicationConfigImpl, newApplicationConfigImpl } from './applicationConfig';\nimport { _FileShareService, FileShareService, FileShareServiceImpl, newFileShareServiceImpl } from './fileShareService';\nimport { _DatabaseResource, DatabaseResource, DatabaseResourceImpl, newDatabaseResourceImpl } from './databaseResource';\nimport { _SSHResource, SSHResource, SSHResourceImpl, newSSHResourceImpl } from './sSHResource';\nimport { _DesktopResource, DesktopResource, DesktopResourceImpl, newDesktopResourceImpl } from './desktopResource';\nimport { _ApplicationService, ApplicationService, ApplicationServiceImpl, newApplicationServiceImpl } from './applicationService';\n\n\n/**\n * Connection information pertaining to a Connector\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorConnectionInfo { \n    /**\n     * The URI used to establish a connection to the connector.\n     */\n    connection_uri?: string;\n    /**\n     * The location (e.g. fully qualified domain name) of the connection. While this matches the location in the `connection_uri`, it is provided separately for convenience. \n     */\n    connection_location?: string;\n    /**\n     * The path of the connection. While this matches the path in the `connection_uri`, it is provided separately for convenience. \n     */\n    connection_path?: string;\n    /**\n     * The identifier for the organisation hosting the server side of this connection. \n     */\n    connection_org_id?: string;\n    /**\n     * The name of the Application (if any) hosting the server side of this connection. Note that not all servers will be hosted by an Application, in which case this will be empty. \n     */\n    connection_app_name?: string;\n    /**\n     * Indicates that the connection is exposing an authentication service \n     */\n    is_an_auth_service?: boolean;\n    /**\n     * Controls if the connection is end to end TLS. \n     */\n    end_to_end_tls?: boolean;\n    /**\n     * The maximum number of connections to maintain to the cluster when stable. Note that this value may be exceeded during times of reconfiguration. A value of zero means that the connection is effectively unused by this Secure Agent. \n     */\n    max_number_connections?: number;\n    /**\n     * The maximum number of connections to maintain to the cluster on a per-router basis when using dynamic routes. Note that this value may be exceeded during times of reconfiguration. A value of zero means that the connection is effectively unused by this Secure Agent. \n     */\n    max_number_dynamic_route_connections?: number;\n    /**\n     * The list of ip services associated with this connection\n     */\n    ip_services?: Array<ApplicationService>;\n    /**\n     * The list of fileshare services associated with this connection\n     */\n    file_share_services?: Array<FileShareService>;\n    /**\n     * The list of (vnc) Desktop services\n     */\n    desktop_services?: Array<DesktopResource>;\n    /**\n     * The list of ssh services associated with this connection\n     */\n    ssh_services?: Array<SSHResource>;\n    /**\n     * The list of databases associated with this connection\n     */\n    database_services?: Array<DatabaseResource>;\n    application_config?: ApplicationConfig;\n    /**\n     * A list of scopes to be requested on behalf of the user of the application and as well as configured based on the application launchers that launch this application/environment. This field is only populated on a GET request when the query parameter get_scopes=True is passed. \n     */\n    readonly application_scopes?: Array<string>;\n    /**\n     * Unique identifier\n     */\n    connection_app_id?: string;\n    /**\n     * The name of the Environment utilized for this application instance. \n     */\n    connection_env_name?: string;\n    /**\n     * Whether or not dynamic routes are enabled for this tunnel. Dynamic routes control whether routes can be added and removed from a tunnel without restarting it. \n     */\n    dynamic_routes?: boolean;\n}\n\nexport interface AgentConnectorConnectionInfo extends _AgentConnectorConnectionInfo {\n    _builtin_original?: _AgentConnectorConnectionInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorConnectionInfoImpl  implements _AgentConnectorConnectionInfo {\n    _builtin_original?: _AgentConnectorConnectionInfo = undefined;\n    public connection_uri: string  | undefined ;\n    public connection_location: string  | undefined ;\n    public connection_path: string  | undefined ;\n    public connection_org_id: string  | undefined ;\n    public connection_app_name: string  | undefined ;\n    public is_an_auth_service: boolean  | undefined ;\n    public end_to_end_tls: boolean  | undefined ;\n    public max_number_connections: number  | undefined ;\n    public max_number_dynamic_route_connections: number  | undefined ;\n    public ip_services: Array<ApplicationService>  | undefined ;\n    public file_share_services: Array<FileShareService>  | undefined ;\n    public desktop_services: Array<DesktopResource>  | undefined ;\n    public ssh_services: Array<SSHResource>  | undefined ;\n    public database_services: Array<DatabaseResource>  | undefined ;\n    public application_config: ApplicationConfig  | undefined ;\n    public readonly application_scopes: Array<string>  | undefined ;\n    public connection_app_id: string  | undefined ;\n    public connection_env_name: string  | undefined ;\n    public dynamic_routes: boolean  | undefined ;\n    constructor(base: _AgentConnectorConnectionInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'connection_uri') >= 0) {\n            this.connection_uri = base.connection_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connection_location') >= 0) {\n            this.connection_location = base.connection_location;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connection_path') >= 0) {\n            this.connection_path = base.connection_path;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connection_org_id') >= 0) {\n            this.connection_org_id = base.connection_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connection_app_name') >= 0) {\n            this.connection_app_name = base.connection_app_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'is_an_auth_service') >= 0) {\n            this.is_an_auth_service = base.is_an_auth_service;\n        }\n        if (Object.keys(base).findIndex(key => key === 'end_to_end_tls') >= 0) {\n            this.end_to_end_tls = base.end_to_end_tls;\n        }\n        if (Object.keys(base).findIndex(key => key === 'max_number_connections') >= 0) {\n            this.max_number_connections = base.max_number_connections;\n        }\n        if (Object.keys(base).findIndex(key => key === 'max_number_dynamic_route_connections') >= 0) {\n            this.max_number_dynamic_route_connections = base.max_number_dynamic_route_connections;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ip_services') >= 0) {\n            if (base.ip_services) {\n                this.ip_services = base.ip_services.map((original) => newApplicationServiceImpl(original));\n            } else {\n                this.ip_services = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'file_share_services') >= 0) {\n            if (base.file_share_services) {\n                this.file_share_services = base.file_share_services.map((original) => newFileShareServiceImpl(original));\n            } else {\n                this.file_share_services = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'desktop_services') >= 0) {\n            if (base.desktop_services) {\n                this.desktop_services = base.desktop_services.map((original) => newDesktopResourceImpl(original));\n            } else {\n                this.desktop_services = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'ssh_services') >= 0) {\n            if (base.ssh_services) {\n                this.ssh_services = base.ssh_services.map((original) => newSSHResourceImpl(original));\n            } else {\n                this.ssh_services = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'database_services') >= 0) {\n            if (base.database_services) {\n                this.database_services = base.database_services.map((original) => newDatabaseResourceImpl(original));\n            } else {\n                this.database_services = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_config') >= 0) {\n            this.application_config = base.application_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_scopes') >= 0) {\n            this.application_scopes = base.application_scopes;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connection_app_id') >= 0) {\n            this.connection_app_id = base.connection_app_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connection_env_name') >= 0) {\n            this.connection_env_name = base.connection_env_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'dynamic_routes') >= 0) {\n            this.dynamic_routes = base.dynamic_routes;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.ip_services !== undefined) {\n            for (const item of this.ip_services) {\n                if (item !== undefined && (item as ApplicationServiceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationServiceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.file_share_services !== undefined) {\n            for (const item of this.file_share_services) {\n                if (item !== undefined && (item as FileShareServiceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as FileShareServiceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.desktop_services !== undefined) {\n            for (const item of this.desktop_services) {\n                if (item !== undefined && (item as DesktopResourceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as DesktopResourceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.ssh_services !== undefined) {\n            for (const item of this.ssh_services) {\n                if (item !== undefined && (item as SSHResourceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as SSHResourceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.database_services !== undefined) {\n            for (const item of this.database_services) {\n                if (item !== undefined && (item as DatabaseResourceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as DatabaseResourceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newAgentConnectorConnectionInfoImpl(base: _AgentConnectorConnectionInfo): AgentConnectorConnectionInfoImpl {\n    return new AgentConnectorConnectionInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ApplicationServiceCommonStats, ApplicationServiceCommonStats, ApplicationServiceCommonStatsImpl, newApplicationServiceCommonStatsImpl } from './applicationServiceCommonStats';\n\n\n/**\n * Upstream statistics for a given ApplicationService as seen by an AgentConnector instance. The set of statistics available for it depend on the concrete type of the ApplicationService as well as the stats publishing configuration. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PerInstanceUpstreamStats { \n    /**\n     * Unique identifier\n     */\n    connector_instance_id: string;\n    /**\n     * Unique identifier\n     */\n    application_service_id?: string;\n    /**\n     * The type of application service which reported this stat \n     */\n    application_service_type?: PerInstanceUpstreamStats.ApplicationServiceTypeEnum;\n    upstream_stats: ApplicationServiceCommonStats;\n}\n\nexport interface PerInstanceUpstreamStats extends _PerInstanceUpstreamStats {\n    _builtin_original?: _PerInstanceUpstreamStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PerInstanceUpstreamStatsImpl  implements _PerInstanceUpstreamStats {\n    _builtin_original?: _PerInstanceUpstreamStats = undefined;\n    public connector_instance_id: string ;\n    public application_service_id: string  | undefined ;\n    public application_service_type: PerInstanceUpstreamStats.ApplicationServiceTypeEnum  | undefined ;\n    public upstream_stats: ApplicationServiceCommonStats ;\n    constructor(base: _PerInstanceUpstreamStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'connector_instance_id') >= 0) {\n            this.connector_instance_id = base.connector_instance_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_service_id') >= 0) {\n            this.application_service_id = base.application_service_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_service_type') >= 0) {\n            this.application_service_type = base.application_service_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_stats') >= 0) {\n            this.upstream_stats = base.upstream_stats;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace PerInstanceUpstreamStats {\n    export type ApplicationServiceTypeEnum = 'ip' | 'fileshare' | 'desktop' | 'ssh' | 'database';\n    export const ApplicationServiceTypeEnum = {\n        ip: 'ip' as ApplicationServiceTypeEnum,\n        fileshare: 'fileshare' as ApplicationServiceTypeEnum,\n        desktop: 'desktop' as ApplicationServiceTypeEnum,\n        ssh: 'ssh' as ApplicationServiceTypeEnum,\n        database: 'database' as ApplicationServiceTypeEnum\n    };\n}\n\n\nexport function newPerInstanceUpstreamStatsImpl(base: _PerInstanceUpstreamStats): PerInstanceUpstreamStatsImpl {\n    return new PerInstanceUpstreamStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourceStatsMetadata, ResourceStatsMetadata, ResourceStatsMetadataImpl, newResourceStatsMetadataImpl } from './resourceStatsMetadata';\nimport { _ApplicationServiceCommonStats, ApplicationServiceCommonStats, ApplicationServiceCommonStatsImpl, newApplicationServiceCommonStatsImpl } from './applicationServiceCommonStats';\nimport { _PerInstanceUpstreamStats, PerInstanceUpstreamStats, PerInstanceUpstreamStatsImpl, newPerInstanceUpstreamStatsImpl } from './perInstanceUpstreamStats';\n\n\n/**\n * The last reported dynamic stastics for a connector, summarised and broken down by type and instance. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorDynamicStats { \n    /**\n     * Unique identifier\n     */\n    connector_id?: string;\n    upstream_totals: ApplicationServiceCommonStats;\n    metadata: ResourceStatsMetadata;\n    /**\n     * The breakdown of the upstream statitics. Each item in the array represents the statistics for an ApplicationService as exposed by an instance. Each application service will have an entry for each instance.\n     */\n    upstream_breakdown?: Array<PerInstanceUpstreamStats>;\n}\n\nexport interface AgentConnectorDynamicStats extends _AgentConnectorDynamicStats {\n    _builtin_original?: _AgentConnectorDynamicStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorDynamicStatsImpl  implements _AgentConnectorDynamicStats {\n    _builtin_original?: _AgentConnectorDynamicStats = undefined;\n    public connector_id: string  | undefined ;\n    public upstream_totals: ApplicationServiceCommonStats ;\n    public metadata: ResourceStatsMetadata ;\n    public upstream_breakdown: Array<PerInstanceUpstreamStats>  | undefined ;\n    constructor(base: _AgentConnectorDynamicStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'connector_id') >= 0) {\n            this.connector_id = base.connector_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_totals') >= 0) {\n            this.upstream_totals = base.upstream_totals;\n        }\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_breakdown') >= 0) {\n            if (base.upstream_breakdown) {\n                this.upstream_breakdown = base.upstream_breakdown.map((original) => newPerInstanceUpstreamStatsImpl(original));\n            } else {\n                this.upstream_breakdown = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.upstream_breakdown !== undefined) {\n            for (const item of this.upstream_breakdown) {\n                if (item !== undefined && (item as PerInstanceUpstreamStatsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as PerInstanceUpstreamStatsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newAgentConnectorDynamicStatsImpl(base: _AgentConnectorDynamicStats): AgentConnectorDynamicStatsImpl {\n    return new AgentConnectorDynamicStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ConnectorUpstreamStatsPublish, ConnectorUpstreamStatsPublish, ConnectorUpstreamStatsPublishImpl, newConnectorUpstreamStatsPublishImpl } from './connectorUpstreamStatsPublish';\n\n\n/**\n * Published statistics for an agent connector instance. Depending on configuration, different set of statistics will be published. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorDynamicStatsPublish { \n    /**\n     * Unique identifier\n     */\n    connector_instance_id: string;\n    /**\n     * When the statistics were collected\n     */\n    collection_time: Date;\n    upstream_stats?: ConnectorUpstreamStatsPublish;\n}\n\nexport interface AgentConnectorDynamicStatsPublish extends _AgentConnectorDynamicStatsPublish {\n    _builtin_original?: _AgentConnectorDynamicStatsPublish;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorDynamicStatsPublishImpl  implements _AgentConnectorDynamicStatsPublish {\n    _builtin_original?: _AgentConnectorDynamicStatsPublish = undefined;\n    public connector_instance_id: string ;\n    public collection_time: Date ;\n    public upstream_stats: ConnectorUpstreamStatsPublish  | undefined ;\n    constructor(base: _AgentConnectorDynamicStatsPublish) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'connector_instance_id') >= 0) {\n            this.connector_instance_id = base.connector_instance_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'collection_time') >= 0) {\n            this.collection_time = base.collection_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_stats') >= 0) {\n            this.upstream_stats = base.upstream_stats;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorDynamicStatsPublishImpl(base: _AgentConnectorDynamicStatsPublish): AgentConnectorDynamicStatsPublishImpl {\n    return new AgentConnectorDynamicStatsPublishImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ServiceForwarderStatus, ServiceForwarderStatus, ServiceForwarderStatusImpl, newServiceForwarderStatusImpl } from './serviceForwarderStatus';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _ServiceForwarderSpec, ServiceForwarderSpec, ServiceForwarderSpecImpl, newServiceForwarderSpecImpl } from './serviceForwarderSpec';\n\n\n/**\n * The ServiceForwarder provides a mechanism to expose a bind address, protocol and port on a connector, that will be forwarded to an ApplicationService found on another connector. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ServiceForwarder { \n    metadata?: MetadataWithId;\n    spec: ServiceForwarderSpec;\n    status?: ServiceForwarderStatus;\n}\n\nexport interface ServiceForwarder extends _ServiceForwarder {\n    _builtin_original?: _ServiceForwarder;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ServiceForwarderImpl  implements _ServiceForwarder {\n    _builtin_original?: _ServiceForwarder = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: ServiceForwarderSpec ;\n    public status: ServiceForwarderStatus  | undefined ;\n    constructor(base: _ServiceForwarder) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newServiceForwarderImpl(base: _ServiceForwarder): ServiceForwarderImpl {\n    return new ServiceForwarderImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _ConnectorSecureTransferStatus, ConnectorSecureTransferStatus, ConnectorSecureTransferStatusImpl, newConnectorSecureTransferStatusImpl } from './connectorSecureTransferStatus';\nimport { _ConnectorSecureTransferSpec, ConnectorSecureTransferSpec, ConnectorSecureTransferSpecImpl, newConnectorSecureTransferSpecImpl } from './connectorSecureTransferSpec';\n\n\n/**\n * The connector secure transfer is a mechanism that allows for a secure transfer of data between connector instances within the same connector id. This is useful when connector instances need to share information, such as a private key for certificates.  The secure copy utilizes ECDH, Eliptic Curve Diffie Helman. Each instance creates their own, one time private/public keys. The public keys are shared between the instances, and then the transfer of the encrypted data can proceed (using DH, using its own private key in combination with the peer public key).  An ConnectorSecureTransfer instance can only be used once, and will timeout if the transfer does not proceed within an configurable period.  The initiation of the secure copy is access controlled by \\'owner\\' of a connector. Only the owner can initiate this. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConnectorSecureTransfer { \n    metadata?: MetadataWithId;\n    spec: ConnectorSecureTransferSpec;\n    status?: ConnectorSecureTransferStatus;\n}\n\nexport interface ConnectorSecureTransfer extends _ConnectorSecureTransfer {\n    _builtin_original?: _ConnectorSecureTransfer;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorSecureTransferImpl  implements _ConnectorSecureTransfer {\n    _builtin_original?: _ConnectorSecureTransfer = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: ConnectorSecureTransferSpec ;\n    public status: ConnectorSecureTransferStatus  | undefined ;\n    constructor(base: _ConnectorSecureTransfer) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newConnectorSecureTransferImpl(base: _ConnectorSecureTransfer): ConnectorSecureTransferImpl {\n    return new ConnectorSecureTransferImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorTunnelInfo, AgentConnectorTunnelInfo, AgentConnectorTunnelInfoImpl, newAgentConnectorTunnelInfoImpl } from './agentConnectorTunnelInfo';\nimport { _AgentConnectorConnectionInfo, AgentConnectorConnectionInfo, AgentConnectorConnectionInfoImpl, newAgentConnectorConnectionInfoImpl } from './agentConnectorConnectionInfo';\nimport { _AllowRuleCompiled, AllowRuleCompiled, AllowRuleCompiledImpl, newAllowRuleCompiledImpl } from './allowRuleCompiled';\nimport { _StatsPublishingConnectorConfig, StatsPublishingConnectorConfig, StatsPublishingConnectorConfigImpl, newStatsPublishingConnectorConfigImpl } from './statsPublishingConnectorConfig';\nimport { _ServiceForwarder, ServiceForwarder, ServiceForwarderImpl, newServiceForwarderImpl } from './serviceForwarder';\nimport { _InternalNetworkRoutingInfo, InternalNetworkRoutingInfo, InternalNetworkRoutingInfoImpl, newInternalNetworkRoutingInfoImpl } from './internalNetworkRoutingInfo';\nimport { _CertificateRevocationProxy, CertificateRevocationProxy, CertificateRevocationProxyImpl, newCertificateRevocationProxyImpl } from './certificateRevocationProxy';\nimport { _ConnectorSecureTransfer, ConnectorSecureTransfer, ConnectorSecureTransferImpl, newConnectorSecureTransferImpl } from './connectorSecureTransfer';\nimport { _RuleConfig, RuleConfig, RuleConfigImpl, newRuleConfigImpl } from './ruleConfig';\nimport { _EgressGateway, EgressGateway, EgressGatewayImpl, newEgressGatewayImpl } from './egressGateway';\nimport { _AgentConnectorCloudRouting, AgentConnectorCloudRouting, AgentConnectorCloudRoutingImpl, newAgentConnectorCloudRoutingImpl } from './agentConnectorCloudRouting';\n\n\n/**\n * Information pertaining to a Connector\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorInfo { \n    /**\n     * Determines whether or not the agent will expose an endpoint for local authentication\n     */\n    local_authentication_enabled?: boolean;\n    /**\n     * The list of connections associated with this agent\n     */\n    connections_info?: Array<AgentConnectorConnectionInfo>;\n    /**\n     * A map of hostname lookup to RuleCompiled \n     */\n    allow_list?: { [key: string]: Array<AllowRuleCompiled> | undefined; };\n    /**\n     * A map of hostname lookup to RuleConfig \n     */\n    extended_rule_map?: { [key: string]: Array<RuleConfig> | undefined; };\n    /**\n     * The PEM encoded public key used for validating bearer tokens\n     */\n    authz_public_key?: string;\n    /**\n     * The URI this connector will establish as the destination URI for service forwarder requests. An agent would request a certificate for the hostname provided as part of the URI for other connectors to establish a TLS connection to this connector. \n     */\n    application_service_uri?: string;\n    /**\n     * The URI this connector uses to establish its tunnels.\n     */\n    tunnel_uri?: string;\n    /**\n     * How a proxy tunnel is terminated.   - tcp: terminate the tunnel at a TCP socket   - inproc: terminate the tunnel at an inprocess socket Note: if not specified, the connector will choose, likely based on its version. \n     */\n    proxy_tunnel_termination?: string;\n    /**\n     * The list of service forwarders associated with this connector.\n     */\n    service_forwarders?: Array<ServiceForwarder>;\n    /**\n     * The list of service forwarders that are forwarded to this connector.\n     */\n    from_service_forwarders?: Array<ServiceForwarder>;\n    routing?: AgentConnectorCloudRouting;\n    tunnel_info?: AgentConnectorTunnelInfo;\n    /**\n     * secure transfers that are in progress for the connector.\n     */\n    active_transfers?: Array<ConnectorSecureTransfer>;\n    stats_publishing?: StatsPublishingConnectorConfig;\n    revocation_proxy?: CertificateRevocationProxy;\n    egress_gateway?: EgressGateway;\n    internal_network_routing_info?: InternalNetworkRoutingInfo;\n}\n\nexport interface AgentConnectorInfo extends _AgentConnectorInfo {\n    _builtin_original?: _AgentConnectorInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorInfoImpl  implements _AgentConnectorInfo {\n    _builtin_original?: _AgentConnectorInfo = undefined;\n    public local_authentication_enabled: boolean  | undefined ;\n    public connections_info: Array<AgentConnectorConnectionInfo>  | undefined ;\n    public allow_list: { [key: string]: Array<AllowRuleCompiled> | undefined; }  | undefined ;\n    public extended_rule_map: { [key: string]: Array<RuleConfig> | undefined; }  | undefined ;\n    public authz_public_key: string  | undefined ;\n    public application_service_uri: string  | undefined ;\n    public tunnel_uri: string  | undefined ;\n    public proxy_tunnel_termination: string  | undefined ;\n    public service_forwarders: Array<ServiceForwarder>  | undefined ;\n    public from_service_forwarders: Array<ServiceForwarder>  | undefined ;\n    public routing: AgentConnectorCloudRouting  | undefined ;\n    public tunnel_info: AgentConnectorTunnelInfo  | undefined ;\n    public active_transfers: Array<ConnectorSecureTransfer>  | undefined ;\n    public stats_publishing: StatsPublishingConnectorConfig  | undefined ;\n    public revocation_proxy: CertificateRevocationProxy  | undefined ;\n    public egress_gateway: EgressGateway  | undefined ;\n    public internal_network_routing_info: InternalNetworkRoutingInfo  | undefined ;\n    constructor(base: _AgentConnectorInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'local_authentication_enabled') >= 0) {\n            this.local_authentication_enabled = base.local_authentication_enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connections_info') >= 0) {\n            if (base.connections_info) {\n                this.connections_info = base.connections_info.map((original) => newAgentConnectorConnectionInfoImpl(original));\n            } else {\n                this.connections_info = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'allow_list') >= 0) {\n            this.allow_list = base.allow_list;\n        }\n        if (Object.keys(base).findIndex(key => key === 'extended_rule_map') >= 0) {\n            this.extended_rule_map = base.extended_rule_map;\n        }\n        if (Object.keys(base).findIndex(key => key === 'authz_public_key') >= 0) {\n            this.authz_public_key = base.authz_public_key;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_service_uri') >= 0) {\n            this.application_service_uri = base.application_service_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'tunnel_uri') >= 0) {\n            this.tunnel_uri = base.tunnel_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'proxy_tunnel_termination') >= 0) {\n            this.proxy_tunnel_termination = base.proxy_tunnel_termination;\n        }\n        if (Object.keys(base).findIndex(key => key === 'service_forwarders') >= 0) {\n            if (base.service_forwarders) {\n                this.service_forwarders = base.service_forwarders.map((original) => newServiceForwarderImpl(original));\n            } else {\n                this.service_forwarders = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'from_service_forwarders') >= 0) {\n            if (base.from_service_forwarders) {\n                this.from_service_forwarders = base.from_service_forwarders.map((original) => newServiceForwarderImpl(original));\n            } else {\n                this.from_service_forwarders = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'routing') >= 0) {\n            this.routing = base.routing;\n        }\n        if (Object.keys(base).findIndex(key => key === 'tunnel_info') >= 0) {\n            this.tunnel_info = base.tunnel_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'active_transfers') >= 0) {\n            if (base.active_transfers) {\n                this.active_transfers = base.active_transfers.map((original) => newConnectorSecureTransferImpl(original));\n            } else {\n                this.active_transfers = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'stats_publishing') >= 0) {\n            this.stats_publishing = base.stats_publishing;\n        }\n        if (Object.keys(base).findIndex(key => key === 'revocation_proxy') >= 0) {\n            this.revocation_proxy = base.revocation_proxy;\n        }\n        if (Object.keys(base).findIndex(key => key === 'egress_gateway') >= 0) {\n            this.egress_gateway = base.egress_gateway;\n        }\n        if (Object.keys(base).findIndex(key => key === 'internal_network_routing_info') >= 0) {\n            this.internal_network_routing_info = base.internal_network_routing_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.connections_info !== undefined) {\n            for (const item of this.connections_info) {\n                if (item !== undefined && (item as AgentConnectorConnectionInfoImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AgentConnectorConnectionInfoImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.service_forwarders !== undefined) {\n            for (const item of this.service_forwarders) {\n                if (item !== undefined && (item as ServiceForwarderImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ServiceForwarderImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.from_service_forwarders !== undefined) {\n            for (const item of this.from_service_forwarders) {\n                if (item !== undefined && (item as ServiceForwarderImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ServiceForwarderImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.active_transfers !== undefined) {\n            for (const item of this.active_transfers) {\n                if (item !== undefined && (item as ConnectorSecureTransferImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ConnectorSecureTransferImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newAgentConnectorInfoImpl(base: _AgentConnectorInfo): AgentConnectorInfoImpl {\n    return new AgentConnectorInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorInstanceSpec, AgentConnectorInstanceSpec, AgentConnectorInstanceSpecImpl, newAgentConnectorInstanceSpecImpl } from './agentConnectorInstanceSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _AgentConnectorInstanceStatus, AgentConnectorInstanceStatus, AgentConnectorInstanceStatusImpl, newAgentConnectorInstanceStatusImpl } from './agentConnectorInstanceStatus';\n\n\n/**\n * An installed instance of an AgentConnector. A specific AgentConnector guid can be installed on multiple devices for high availability. For each running/installed instance, each device uniquely creates an AgentConnectorInstance. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorInstance { \n    metadata?: MetadataWithId;\n    spec: AgentConnectorInstanceSpec;\n    status?: AgentConnectorInstanceStatus;\n}\n\nexport interface AgentConnectorInstance extends _AgentConnectorInstance {\n    _builtin_original?: _AgentConnectorInstance;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorInstanceImpl  implements _AgentConnectorInstance {\n    _builtin_original?: _AgentConnectorInstance = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: AgentConnectorInstanceSpec ;\n    public status: AgentConnectorInstanceStatus  | undefined ;\n    constructor(base: _AgentConnectorInstance) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorInstanceImpl(base: _AgentConnectorInstance): AgentConnectorInstanceImpl {\n    return new AgentConnectorInstanceImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The specification of the AgentConnectorInstance\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorInstanceSpec { \n    /**\n     * Unique identifier\n     */\n    readonly connector_id: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n}\n\nexport interface AgentConnectorInstanceSpec extends _AgentConnectorInstanceSpec {\n    _builtin_original?: _AgentConnectorInstanceSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorInstanceSpecImpl  implements _AgentConnectorInstanceSpec {\n    _builtin_original?: _AgentConnectorInstanceSpec = undefined;\n    public readonly connector_id: string ;\n    public org_id: string ;\n    constructor(base: _AgentConnectorInstanceSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'connector_id') >= 0) {\n            this.connector_id = base.connector_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorInstanceSpecImpl(base: _AgentConnectorInstanceSpec): AgentConnectorInstanceSpecImpl {\n    return new AgentConnectorInstanceSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorStats, AgentConnectorStats, AgentConnectorStatsImpl, newAgentConnectorStatsImpl } from './agentConnectorStats';\nimport { _AgentConnectorPerformanceMetrics, AgentConnectorPerformanceMetrics, AgentConnectorPerformanceMetricsImpl, newAgentConnectorPerformanceMetricsImpl } from './agentConnectorPerformanceMetrics';\nimport { _AgentConnectorSystemInfo, AgentConnectorSystemInfo, AgentConnectorSystemInfoImpl, newAgentConnectorSystemInfoImpl } from './agentConnectorSystemInfo';\nimport { _OperationalStatus, OperationalStatus, OperationalStatusImpl, newOperationalStatusImpl } from './operationalStatus';\n\n\n/**\n * Status information pertaining to a Connector. Note that stats will only be returned if explicitly requested. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorInstanceStatus { \n    /**\n     * The agent connector instance name.\n     */\n    name?: string;\n    /**\n     * The agent connector instance number.\n     */\n    instance_number?: number;\n    /**\n     * Service account user GUID used to deploy the connector\n     */\n    service_account_id?: string;\n    stats?: AgentConnectorStats;\n    operational_status?: OperationalStatus;\n    sys_info?: AgentConnectorSystemInfo;\n    perf_metrics?: AgentConnectorPerformanceMetrics;\n}\n\nexport interface AgentConnectorInstanceStatus extends _AgentConnectorInstanceStatus {\n    _builtin_original?: _AgentConnectorInstanceStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorInstanceStatusImpl  implements _AgentConnectorInstanceStatus {\n    _builtin_original?: _AgentConnectorInstanceStatus = undefined;\n    public name: string  | undefined ;\n    public instance_number: number  | undefined ;\n    public service_account_id: string  | undefined ;\n    public stats: AgentConnectorStats  | undefined ;\n    public operational_status: OperationalStatus  | undefined ;\n    public sys_info: AgentConnectorSystemInfo  | undefined ;\n    public perf_metrics: AgentConnectorPerformanceMetrics  | undefined ;\n    constructor(base: _AgentConnectorInstanceStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'instance_number') >= 0) {\n            this.instance_number = base.instance_number;\n        }\n        if (Object.keys(base).findIndex(key => key === 'service_account_id') >= 0) {\n            this.service_account_id = base.service_account_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'stats') >= 0) {\n            this.stats = base.stats;\n        }\n        if (Object.keys(base).findIndex(key => key === 'operational_status') >= 0) {\n            this.operational_status = base.operational_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'sys_info') >= 0) {\n            this.sys_info = base.sys_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'perf_metrics') >= 0) {\n            this.perf_metrics = base.perf_metrics;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorInstanceStatusImpl(base: _AgentConnectorInstanceStatus): AgentConnectorInstanceStatusImpl {\n    return new AgentConnectorInstanceStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An error encounted when binding to the provided address. Errors may be system-dependent. They are provided for informational and diagnotic purposes. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorLocalBindError { \n    /**\n     * The contents of the error\n     */\n    error_message: string;\n    /**\n     * When the error occured\n     */\n    error_time: Date;\n}\n\nexport interface AgentConnectorLocalBindError extends _AgentConnectorLocalBindError {\n    _builtin_original?: _AgentConnectorLocalBindError;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorLocalBindErrorImpl  implements _AgentConnectorLocalBindError {\n    _builtin_original?: _AgentConnectorLocalBindError = undefined;\n    public error_message: string ;\n    public error_time: Date ;\n    constructor(base: _AgentConnectorLocalBindError) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'error_message') >= 0) {\n            this.error_message = base.error_message;\n        }\n        if (Object.keys(base).findIndex(key => key === 'error_time') >= 0) {\n            this.error_time = base.error_time;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorLocalBindErrorImpl(base: _AgentConnectorLocalBindError): AgentConnectorLocalBindErrorImpl {\n    return new AgentConnectorLocalBindErrorImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorLocalBindError, AgentConnectorLocalBindError, AgentConnectorLocalBindErrorImpl, newAgentConnectorLocalBindErrorImpl } from './agentConnectorLocalBindError';\n\n\n/**\n * Statistics of a configured local bind. This will provide the running address of the bind as well as any errors encounred setting it up. If the status is `good`, then the errors occured in the past, and can be ignored. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorLocalBindStats { \n    /**\n     * The status of the bind. The possible values mean:  - `good`: the agent is listening on the the `running_address` for connections. - `warn`: the agent is listening on the `running_address` for connections but something is not   quite right. Check `recent_errors` for a hint. - `down`: the agent is not listening to an address corresponding  to `bind_address`. Check `recent_errors`   for the cause. \n     */\n    bind_status: AgentConnectorLocalBindStats.BindStatusEnum;\n    /**\n     * The address and port on which the agent is listening for connections. This takes the form of `ip:port`. Note that this may not correspond to a concrete address if the bind address was not set. \n     */\n    running_address: string | null;\n    /**\n     * The address and port configured for this bind. Use this to find the item corresponding to a given AgentConnectorLocalBind. \n     */\n    bind_address: string;\n    /**\n     * The most recently encountered errors when binding to `bind_address`. Note that this list not being empty does not imply that the agent successfully bound: errors prior to the successful bind will still be present in the list. Use the `bind_status` instead. \n     */\n    recent_errors: Array<AgentConnectorLocalBindError>;\n}\n\nexport interface AgentConnectorLocalBindStats extends _AgentConnectorLocalBindStats {\n    _builtin_original?: _AgentConnectorLocalBindStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorLocalBindStatsImpl  implements _AgentConnectorLocalBindStats {\n    _builtin_original?: _AgentConnectorLocalBindStats = undefined;\n    public bind_status: AgentConnectorLocalBindStats.BindStatusEnum ;\n    public running_address: string | null ;\n    public bind_address: string ;\n    public recent_errors: Array<AgentConnectorLocalBindError> ;\n    constructor(base: _AgentConnectorLocalBindStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'bind_status') >= 0) {\n            this.bind_status = base.bind_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'running_address') >= 0) {\n            this.running_address = base.running_address;\n        }\n        if (Object.keys(base).findIndex(key => key === 'bind_address') >= 0) {\n            this.bind_address = base.bind_address;\n        }\n        if (Object.keys(base).findIndex(key => key === 'recent_errors') >= 0) {\n            if (base.recent_errors) {\n                this.recent_errors = base.recent_errors.map((original) => newAgentConnectorLocalBindErrorImpl(original));\n            } else {\n                this.recent_errors = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.recent_errors !== undefined) {\n            for (const item of this.recent_errors) {\n                if (item !== undefined && (item as AgentConnectorLocalBindErrorImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AgentConnectorLocalBindErrorImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace AgentConnectorLocalBindStats {\n    export type BindStatusEnum = 'good' | 'warn' | 'down';\n    export const BindStatusEnum = {\n        good: 'good' as BindStatusEnum,\n        warn: 'warn' as BindStatusEnum,\n        down: 'down' as BindStatusEnum\n    };\n}\n\n\nexport function newAgentConnectorLocalBindStatsImpl(base: _AgentConnectorLocalBindStats): AgentConnectorLocalBindStatsImpl {\n    return new AgentConnectorLocalBindStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Statistics related to the agent\\'s on demand routing functionality. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorOnDemandRoutingStats { \n    /**\n     * The number of route requests dropped because the request processing queue was full. This incrementing could indicate that a large number of requests hit a connector that just came up all at once, or that the connector is running on a slow system. \n     */\n    queue_full: number;\n    /**\n     * The number of route requests dropped because it was too old. This typically happens when the connector has been down for a long time, but it could also happen if the system is overloaded. It could also happen if there is a time sync problem between the connector and the cloud infrastructure. \n     */\n    request_expired: number;\n    /**\n     * The number of route requests which were ignored because a tunnel for the route already existed. This typically happens due to a race where many concurrent requests satisfied by the same tunnel come in to the system. \n     */\n    tunnel_already_exists: number;\n    /**\n     * The number of route requests from a pop to which this connected is not configured to connect. \n     */\n    unused_pop: number;\n    /**\n     * The number of on demand connections which should be in an active state. Note that this may be less than active_connections if the AgentConnector is currently applying configuration changes. It may be more than active_connections if there is a connectivity issue, or connections are first starting. This is included in the overall target_number_connections, but broken out for diagnostics purposes. \n     */\n    target_number_on_demand_connections: number;\n}\n\nexport interface AgentConnectorOnDemandRoutingStats extends _AgentConnectorOnDemandRoutingStats {\n    _builtin_original?: _AgentConnectorOnDemandRoutingStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorOnDemandRoutingStatsImpl  implements _AgentConnectorOnDemandRoutingStats {\n    _builtin_original?: _AgentConnectorOnDemandRoutingStats = undefined;\n    public queue_full: number ;\n    public request_expired: number ;\n    public tunnel_already_exists: number ;\n    public unused_pop: number ;\n    public target_number_on_demand_connections: number ;\n    constructor(base: _AgentConnectorOnDemandRoutingStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'queue_full') >= 0) {\n            this.queue_full = base.queue_full;\n        }\n        if (Object.keys(base).findIndex(key => key === 'request_expired') >= 0) {\n            this.request_expired = base.request_expired;\n        }\n        if (Object.keys(base).findIndex(key => key === 'tunnel_already_exists') >= 0) {\n            this.tunnel_already_exists = base.tunnel_already_exists;\n        }\n        if (Object.keys(base).findIndex(key => key === 'unused_pop') >= 0) {\n            this.unused_pop = base.unused_pop;\n        }\n        if (Object.keys(base).findIndex(key => key === 'target_number_on_demand_connections') >= 0) {\n            this.target_number_on_demand_connections = base.target_number_on_demand_connections;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorOnDemandRoutingStatsImpl(base: _AgentConnectorOnDemandRoutingStats): AgentConnectorOnDemandRoutingStatsImpl {\n    return new AgentConnectorOnDemandRoutingStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _X509RootCertificate, X509RootCertificate, X509RootCertificateImpl, newX509RootCertificateImpl } from './x509RootCertificate';\n\n\n/**\n * The agent connector outer proxy info\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorOuterProxyInfo { \n    /**\n     * The agent connector proxy url\n     */\n    proxy_url?: string;\n    root_certificate?: X509RootCertificate;\n}\n\nexport interface AgentConnectorOuterProxyInfo extends _AgentConnectorOuterProxyInfo {\n    _builtin_original?: _AgentConnectorOuterProxyInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorOuterProxyInfoImpl  implements _AgentConnectorOuterProxyInfo {\n    _builtin_original?: _AgentConnectorOuterProxyInfo = undefined;\n    public proxy_url: string  | undefined ;\n    public root_certificate: X509RootCertificate  | undefined ;\n    constructor(base: _AgentConnectorOuterProxyInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'proxy_url') >= 0) {\n            this.proxy_url = base.proxy_url;\n        }\n        if (Object.keys(base).findIndex(key => key === 'root_certificate') >= 0) {\n            this.root_certificate = base.root_certificate;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorOuterProxyInfoImpl(base: _AgentConnectorOuterProxyInfo): AgentConnectorOuterProxyInfoImpl {\n    return new AgentConnectorOuterProxyInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Statistics related to an individual share.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorPerShareStats { \n    /**\n     * The prefix used to route the requests to the shared local path. This is typically derived from the share_name of the Share. \n     */\n    share_prefix: string;\n    /**\n     * The unique ID of the FileShareService to which this share corresponds. \n     */\n    share_id: string;\n    /**\n     * The path on the local file system which is being shared.\n     */\n    local_path: string;\n    /**\n     * The total number of requests made to this share.\n     */\n    total_requests: number;\n    /**\n     * The total number of requests which have succeeded.\n     */\n    successful_requests: number;\n    /**\n     * The total number of requests which have failed.\n     */\n    failed_requests: number;\n    /**\n     * The total number of bytes sent in the body of responses to requests. This includes any metadata about files, or data included in failure responses. \n     */\n    bytes_sent: number;\n    /**\n     * The total number of bytes received in the body of requests. This includes any metadata about files, files themselves, or general commands such as lock requests. \n     */\n    bytes_received: number;\n    /**\n     * When the share was started.\n     */\n    share_start_time: Date;\n    /**\n     * True if share has correct permissions, false otherwise. \n     */\n    correct_share_permissions?: boolean;\n}\n\nexport interface AgentConnectorPerShareStats extends _AgentConnectorPerShareStats {\n    _builtin_original?: _AgentConnectorPerShareStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorPerShareStatsImpl  implements _AgentConnectorPerShareStats {\n    _builtin_original?: _AgentConnectorPerShareStats = undefined;\n    public share_prefix: string ;\n    public share_id: string ;\n    public local_path: string ;\n    public total_requests: number ;\n    public successful_requests: number ;\n    public failed_requests: number ;\n    public bytes_sent: number ;\n    public bytes_received: number ;\n    public share_start_time: Date ;\n    public correct_share_permissions: boolean  | undefined ;\n    constructor(base: _AgentConnectorPerShareStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'share_prefix') >= 0) {\n            this.share_prefix = base.share_prefix;\n        }\n        if (Object.keys(base).findIndex(key => key === 'share_id') >= 0) {\n            this.share_id = base.share_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'local_path') >= 0) {\n            this.local_path = base.local_path;\n        }\n        if (Object.keys(base).findIndex(key => key === 'total_requests') >= 0) {\n            this.total_requests = base.total_requests;\n        }\n        if (Object.keys(base).findIndex(key => key === 'successful_requests') >= 0) {\n            this.successful_requests = base.successful_requests;\n        }\n        if (Object.keys(base).findIndex(key => key === 'failed_requests') >= 0) {\n            this.failed_requests = base.failed_requests;\n        }\n        if (Object.keys(base).findIndex(key => key === 'bytes_sent') >= 0) {\n            this.bytes_sent = base.bytes_sent;\n        }\n        if (Object.keys(base).findIndex(key => key === 'bytes_received') >= 0) {\n            this.bytes_received = base.bytes_received;\n        }\n        if (Object.keys(base).findIndex(key => key === 'share_start_time') >= 0) {\n            this.share_start_time = base.share_start_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'correct_share_permissions') >= 0) {\n            this.correct_share_permissions = base.correct_share_permissions;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorPerShareStatsImpl(base: _AgentConnectorPerShareStats): AgentConnectorPerShareStatsImpl {\n    return new AgentConnectorPerShareStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The stats for each user using this connector to access resources \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorPerUserStats { \n    /**\n     * Unique identifier\n     */\n    user: string;\n    /**\n     * Time that the user was provisioned\n     */\n    login_time: Date;\n}\n\nexport interface AgentConnectorPerUserStats extends _AgentConnectorPerUserStats {\n    _builtin_original?: _AgentConnectorPerUserStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorPerUserStatsImpl  implements _AgentConnectorPerUserStats {\n    _builtin_original?: _AgentConnectorPerUserStats = undefined;\n    public user: string ;\n    public login_time: Date ;\n    constructor(base: _AgentConnectorPerUserStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user') >= 0) {\n            this.user = base.user;\n        }\n        if (Object.keys(base).findIndex(key => key === 'login_time') >= 0) {\n            this.login_time = base.login_time;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorPerUserStatsImpl(base: _AgentConnectorPerUserStats): AgentConnectorPerUserStatsImpl {\n    return new AgentConnectorPerUserStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ConnectorStatsMetadata, ConnectorStatsMetadata, ConnectorStatsMetadataImpl, newConnectorStatsMetadataImpl } from './connectorStatsMetadata';\n\n\n/**\n * Performance Metrics for connector instance. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorPerformanceMetrics { \n    metadata?: ConnectorStatsMetadata;\n    /**\n     * Estimated total available CPU time for user Go code or the Go runtime, as defined by GOMAXPROCS. In other words, GOMAXPROCS integrated over the wall-clock duration this process has been executing for. This metric is an overestimate, and not directly comparable to system CPU time measurements. Compare only with other /cpu/classes metrics. Sum of all metrics in /cpu/classes. \n     */\n    cpu_total_seconds?: number;\n    /**\n     * Estimated total available CPU time for user Go code or the Go runtime, as defined by GOMAXPROCS. In other words, GOMAXPROCS integrated over the wall-clock duration this process has been executing for. This metric is an overestimate, and not directly comparable to system CPU time measurements. Compare only with other /cpu/classes metrics. Sum of all metrics in /cpu/classes. \n     */\n    cpu_user_seconds?: number;\n    /**\n     * Memory that is completely free and eligible to be returned to the underlying system, but has not been. This metric is the runtime\\'s estimate of free address space that is backed by physical memory. \n     */\n    memory_heap_free?: number;\n}\n\nexport interface AgentConnectorPerformanceMetrics extends _AgentConnectorPerformanceMetrics {\n    _builtin_original?: _AgentConnectorPerformanceMetrics;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorPerformanceMetricsImpl  implements _AgentConnectorPerformanceMetrics {\n    _builtin_original?: _AgentConnectorPerformanceMetrics = undefined;\n    public metadata: ConnectorStatsMetadata  | undefined ;\n    public cpu_total_seconds: number  | undefined ;\n    public cpu_user_seconds: number  | undefined ;\n    public memory_heap_free: number  | undefined ;\n    constructor(base: _AgentConnectorPerformanceMetrics) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'cpu_total_seconds') >= 0) {\n            this.cpu_total_seconds = base.cpu_total_seconds;\n        }\n        if (Object.keys(base).findIndex(key => key === 'cpu_user_seconds') >= 0) {\n            this.cpu_user_seconds = base.cpu_user_seconds;\n        }\n        if (Object.keys(base).findIndex(key => key === 'memory_heap_free') >= 0) {\n            this.memory_heap_free = base.memory_heap_free;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorPerformanceMetricsImpl(base: _AgentConnectorPerformanceMetrics): AgentConnectorPerformanceMetricsImpl {\n    return new AgentConnectorPerformanceMetricsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorProxySpec, AgentConnectorProxySpec, AgentConnectorProxySpecImpl, newAgentConnectorProxySpecImpl } from './agentConnectorProxySpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _AgentConnectorProxyStatus, AgentConnectorProxyStatus, AgentConnectorProxyStatusImpl, newAgentConnectorProxyStatusImpl } from './agentConnectorProxyStatus';\n\n\n/**\n * Handles the configuration of a connector (called the outer connector) providing a proxy to another connector (called the inner connector).  This is useful where the inner connector may not have direct access to the internet (behind a DMZ, or Virtually Air gaped), whereas another connector (the outer connector) has direct internet access.  On creation of this object, if local_bind is not defined, the following default will be created:   local_port: 18443   local_bind.bind_host: 0.0.0.0 The local_bind refers to the coordinates of the proxy located in the outer_connector_id. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorProxy { \n    metadata?: MetadataWithId;\n    spec: AgentConnectorProxySpec;\n    status?: AgentConnectorProxyStatus;\n}\n\nexport interface AgentConnectorProxy extends _AgentConnectorProxy {\n    _builtin_original?: _AgentConnectorProxy;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorProxyImpl  implements _AgentConnectorProxy {\n    _builtin_original?: _AgentConnectorProxy = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: AgentConnectorProxySpec ;\n    public status: AgentConnectorProxyStatus  | undefined ;\n    constructor(base: _AgentConnectorProxy) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorProxyImpl(base: _AgentConnectorProxy): AgentConnectorProxyImpl {\n    return new AgentConnectorProxyImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorProxyRequestStatsDetails, AgentConnectorProxyRequestStatsDetails, AgentConnectorProxyRequestStatsDetailsImpl, newAgentConnectorProxyRequestStatsDetailsImpl } from './agentConnectorProxyRequestStatsDetails';\n\n\n/**\n * Statistics related to the requests handled by an AgentConnector\\'s builtin proxy. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorProxyRequestStats { \n    /**\n     * When the last request handled by this proxy was started. Note that the request may still be in flight. \n     */\n    last_request_start_time?: Date;\n    /**\n     * The number of bytes, including headers, received by the proxy.\n     */\n    bytes_received: number;\n    /**\n     * The number of bytes, including headers, sent by the proxy.\n     */\n    bytes_sent: number;\n    requests: AgentConnectorProxyRequestStatsDetails;\n}\n\nexport interface AgentConnectorProxyRequestStats extends _AgentConnectorProxyRequestStats {\n    _builtin_original?: _AgentConnectorProxyRequestStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorProxyRequestStatsImpl  implements _AgentConnectorProxyRequestStats {\n    _builtin_original?: _AgentConnectorProxyRequestStats = undefined;\n    public last_request_start_time: Date  | undefined ;\n    public bytes_received: number ;\n    public bytes_sent: number ;\n    public requests: AgentConnectorProxyRequestStatsDetails ;\n    constructor(base: _AgentConnectorProxyRequestStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'last_request_start_time') >= 0) {\n            this.last_request_start_time = base.last_request_start_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'bytes_received') >= 0) {\n            this.bytes_received = base.bytes_received;\n        }\n        if (Object.keys(base).findIndex(key => key === 'bytes_sent') >= 0) {\n            this.bytes_sent = base.bytes_sent;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requests') >= 0) {\n            this.requests = base.requests;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorProxyRequestStatsImpl(base: _AgentConnectorProxyRequestStats): AgentConnectorProxyRequestStatsImpl {\n    return new AgentConnectorProxyRequestStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Detailed statistics for requests handled by an AgentConnector\\'s builtin proxy. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorProxyRequestStatsDetails { \n    /**\n     * The total number of requests started by the proxy\n     */\n    started: number;\n    /**\n     * The total number of requests finished by the proxy.\n     */\n    finished: number;\n    /**\n     * The number of requests which completed with a status code between 100 and 199 \n     */\n    status_1xx: number;\n    /**\n     * The number of requests which completed with a status code between 200 and 299 \n     */\n    status_2xx: number;\n    /**\n     * The number of requests which completed with a status code between 300 and 399 \n     */\n    status_3xx: number;\n    /**\n     * The number of requests which completed with a status code between 400 and 499 \n     */\n    status_4xx: number;\n    /**\n     * The number of requests which completed with a status code between 500 and 599 \n     */\n    status_5xx: number;\n    /**\n     * The number of requests which completed with an unknown status code \n     */\n    status_unknown: number;\n    /**\n     * The number of requests which failed authentication. \n     */\n    failed_authentication: number;\n    /**\n     * The number of requests which failed authorisation. \n     */\n    failed_authorisation: number;\n    /**\n     * The number of requests which are redirected during authorisation. \n     */\n    authz_redirected: number;\n}\n\nexport interface AgentConnectorProxyRequestStatsDetails extends _AgentConnectorProxyRequestStatsDetails {\n    _builtin_original?: _AgentConnectorProxyRequestStatsDetails;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorProxyRequestStatsDetailsImpl  implements _AgentConnectorProxyRequestStatsDetails {\n    _builtin_original?: _AgentConnectorProxyRequestStatsDetails = undefined;\n    public started: number ;\n    public finished: number ;\n    public status_1xx: number ;\n    public status_2xx: number ;\n    public status_3xx: number ;\n    public status_4xx: number ;\n    public status_5xx: number ;\n    public status_unknown: number ;\n    public failed_authentication: number ;\n    public failed_authorisation: number ;\n    public authz_redirected: number ;\n    constructor(base: _AgentConnectorProxyRequestStatsDetails) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'started') >= 0) {\n            this.started = base.started;\n        }\n        if (Object.keys(base).findIndex(key => key === 'finished') >= 0) {\n            this.finished = base.finished;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status_1xx') >= 0) {\n            this.status_1xx = base.status_1xx;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status_2xx') >= 0) {\n            this.status_2xx = base.status_2xx;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status_3xx') >= 0) {\n            this.status_3xx = base.status_3xx;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status_4xx') >= 0) {\n            this.status_4xx = base.status_4xx;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status_5xx') >= 0) {\n            this.status_5xx = base.status_5xx;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status_unknown') >= 0) {\n            this.status_unknown = base.status_unknown;\n        }\n        if (Object.keys(base).findIndex(key => key === 'failed_authentication') >= 0) {\n            this.failed_authentication = base.failed_authentication;\n        }\n        if (Object.keys(base).findIndex(key => key === 'failed_authorisation') >= 0) {\n            this.failed_authorisation = base.failed_authorisation;\n        }\n        if (Object.keys(base).findIndex(key => key === 'authz_redirected') >= 0) {\n            this.authz_redirected = base.authz_redirected;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorProxyRequestStatsDetailsImpl(base: _AgentConnectorProxyRequestStatsDetails): AgentConnectorProxyRequestStatsDetailsImpl {\n    return new AgentConnectorProxyRequestStatsDetailsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorLocalBind, AgentConnectorLocalBind, AgentConnectorLocalBindImpl, newAgentConnectorLocalBindImpl } from './agentConnectorLocalBind';\n\n\n/**\n * The specification for an AgentConnectorProxy\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorProxySpec { \n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * Unique identifier\n     */\n    inner_connector_id: string;\n    /**\n     * Unique identifier\n     */\n    outer_connector_id: string;\n    local_bind?: AgentConnectorLocalBind;\n}\n\nexport interface AgentConnectorProxySpec extends _AgentConnectorProxySpec {\n    _builtin_original?: _AgentConnectorProxySpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorProxySpecImpl  implements _AgentConnectorProxySpec {\n    _builtin_original?: _AgentConnectorProxySpec = undefined;\n    public org_id: string ;\n    public inner_connector_id: string ;\n    public outer_connector_id: string ;\n    public local_bind: AgentConnectorLocalBind  | undefined ;\n    constructor(base: _AgentConnectorProxySpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'inner_connector_id') >= 0) {\n            this.inner_connector_id = base.inner_connector_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'outer_connector_id') >= 0) {\n            this.outer_connector_id = base.outer_connector_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'local_bind') >= 0) {\n            this.local_bind = base.local_bind;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorProxySpecImpl(base: _AgentConnectorProxySpec): AgentConnectorProxySpecImpl {\n    return new AgentConnectorProxySpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorProxyRequestStats, AgentConnectorProxyRequestStats, AgentConnectorProxyRequestStatsImpl, newAgentConnectorProxyRequestStatsImpl } from './agentConnectorProxyRequestStats';\n\n\n/**\n * Statistics related to the transfer of data through an AgentConnector using its builtin proxy \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorProxyStats { \n    overview: AgentConnectorProxyRequestStats;\n    /**\n     * When the proxy last started.\n     */\n    start_time?: Date;\n    /**\n     * When the proxy last stopped.\n     */\n    stop_time?: Date;\n}\n\nexport interface AgentConnectorProxyStats extends _AgentConnectorProxyStats {\n    _builtin_original?: _AgentConnectorProxyStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorProxyStatsImpl  implements _AgentConnectorProxyStats {\n    _builtin_original?: _AgentConnectorProxyStats = undefined;\n    public overview: AgentConnectorProxyRequestStats ;\n    public start_time: Date  | undefined ;\n    public stop_time: Date  | undefined ;\n    constructor(base: _AgentConnectorProxyStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'overview') >= 0) {\n            this.overview = base.overview;\n        }\n        if (Object.keys(base).findIndex(key => key === 'start_time') >= 0) {\n            this.start_time = base.start_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'stop_time') >= 0) {\n            this.stop_time = base.stop_time;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorProxyStatsImpl(base: _AgentConnectorProxyStats): AgentConnectorProxyStatsImpl {\n    return new AgentConnectorProxyStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorOuterProxyInfo, AgentConnectorOuterProxyInfo, AgentConnectorOuterProxyInfoImpl, newAgentConnectorOuterProxyInfoImpl } from './agentConnectorOuterProxyInfo';\n\n\n/**\n * The status for an AgentConnectorProxy\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorProxyStatus { \n    /**\n     * The outer connector proxy endpoints\n     */\n    outer_connector_tunnels?: Array<AgentConnectorOuterProxyInfo>;\n}\n\nexport interface AgentConnectorProxyStatus extends _AgentConnectorProxyStatus {\n    _builtin_original?: _AgentConnectorProxyStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorProxyStatusImpl  implements _AgentConnectorProxyStatus {\n    _builtin_original?: _AgentConnectorProxyStatus = undefined;\n    public outer_connector_tunnels: Array<AgentConnectorOuterProxyInfo>  | undefined ;\n    constructor(base: _AgentConnectorProxyStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'outer_connector_tunnels') >= 0) {\n            if (base.outer_connector_tunnels) {\n                this.outer_connector_tunnels = base.outer_connector_tunnels.map((original) => newAgentConnectorOuterProxyInfoImpl(original));\n            } else {\n                this.outer_connector_tunnels = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.outer_connector_tunnels !== undefined) {\n            for (const item of this.outer_connector_tunnels) {\n                if (item !== undefined && (item as AgentConnectorOuterProxyInfoImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AgentConnectorOuterProxyInfoImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newAgentConnectorProxyStatusImpl(base: _AgentConnectorProxyStatus): AgentConnectorProxyStatusImpl {\n    return new AgentConnectorProxyStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorQueueSpec, AgentConnectorQueueSpec, AgentConnectorQueueSpecImpl, newAgentConnectorQueueSpecImpl } from './agentConnectorQueueSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _AgentConnectorQueueStatus, AgentConnectorQueueStatus, AgentConnectorQueueStatusImpl, newAgentConnectorQueueStatusImpl } from './agentConnectorQueueStatus';\n\n\n/**\n * An agent connector queue for receiving messages on a particular topic.  Connector queues have a finite lifetime (TTL). The default ttl is system generated at 3600 seconds.  The system allows a predefined set of queues for connector_id (10).  Unused queues (once they are expired), will be garbaged collected (deleted) so that new queues can be allocated by future consumers. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorQueue { \n    metadata?: MetadataWithId;\n    spec: AgentConnectorQueueSpec;\n    status?: AgentConnectorQueueStatus;\n}\n\nexport interface AgentConnectorQueue extends _AgentConnectorQueue {\n    _builtin_original?: _AgentConnectorQueue;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorQueueImpl  implements _AgentConnectorQueue {\n    _builtin_original?: _AgentConnectorQueue = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: AgentConnectorQueueSpec ;\n    public status: AgentConnectorQueueStatus  | undefined ;\n    constructor(base: _AgentConnectorQueue) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorQueueImpl(base: _AgentConnectorQueue): AgentConnectorQueueImpl {\n    return new AgentConnectorQueueImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorQueue, AgentConnectorQueue, AgentConnectorQueueImpl, newAgentConnectorQueueImpl } from './agentConnectorQueue';\n\n\n/**\n * Response object for listing AgentConnectorQueue\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorQueueResponse { \n    /**\n     * List of AgentConnectorQueue\n     */\n    queues?: Array<AgentConnectorQueue>;\n    /**\n     * The maximum number of records returned in the response.\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n}\n\nexport interface AgentConnectorQueueResponse extends _AgentConnectorQueueResponse {\n    _builtin_original?: _AgentConnectorQueueResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorQueueResponseImpl  implements _AgentConnectorQueueResponse {\n    _builtin_original?: _AgentConnectorQueueResponse = undefined;\n    public queues: Array<AgentConnectorQueue>  | undefined ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _AgentConnectorQueueResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'queues') >= 0) {\n            if (base.queues) {\n                this.queues = base.queues.map((original) => newAgentConnectorQueueImpl(original));\n            } else {\n                this.queues = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.queues !== undefined) {\n            for (const item of this.queues) {\n                if (item !== undefined && (item as AgentConnectorQueueImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AgentConnectorQueueImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newAgentConnectorQueueResponseImpl(base: _AgentConnectorQueueResponse): AgentConnectorQueueResponseImpl {\n    return new AgentConnectorQueueResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An agent connector queue for receiving asynchronous messages. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorQueueSpec { \n    /**\n     * Unique identifier\n     */\n    connector_id: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * Queues will expire after this period of time only when they are not used (e.g. do not have consumers). This value is in seconds. By default, if no value is provided, the system ttl default is set to 3600 (1 hour). \n     */\n    queue_ttl?: number;\n    /**\n     * A unique name for a queue within a connector_id.  There is a fixed number of queues permitted for a connector_id. \n     */\n    instance_name: string;\n    /**\n     * Whether or not to receive dynamic route requests \n     */\n    dynamic_routes_enabled?: boolean;\n    /**\n     * Whether or not on demand routes are supported for this tunnel. A tunnel which supports on demand routing will not bring up a tunnel until a request has arrived at the router. \n     */\n    on_demand_routes_enabled?: boolean;\n}\n\nexport interface AgentConnectorQueueSpec extends _AgentConnectorQueueSpec {\n    _builtin_original?: _AgentConnectorQueueSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorQueueSpecImpl  implements _AgentConnectorQueueSpec {\n    _builtin_original?: _AgentConnectorQueueSpec = undefined;\n    public connector_id: string ;\n    public org_id: string ;\n    public queue_ttl: number  | undefined ;\n    public instance_name: string ;\n    public dynamic_routes_enabled: boolean  | undefined ;\n    public on_demand_routes_enabled: boolean  | undefined ;\n    constructor(base: _AgentConnectorQueueSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'connector_id') >= 0) {\n            this.connector_id = base.connector_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'queue_ttl') >= 0) {\n            this.queue_ttl = base.queue_ttl;\n        }\n        if (Object.keys(base).findIndex(key => key === 'instance_name') >= 0) {\n            this.instance_name = base.instance_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'dynamic_routes_enabled') >= 0) {\n            this.dynamic_routes_enabled = base.dynamic_routes_enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'on_demand_routes_enabled') >= 0) {\n            this.on_demand_routes_enabled = base.on_demand_routes_enabled;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorQueueSpecImpl(base: _AgentConnectorQueueSpec): AgentConnectorQueueSpecImpl {\n    return new AgentConnectorQueueSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Agent connector queue status. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorQueueStatus { \n    /**\n     * The system generated queue name. \n     */\n    queue_name: string;\n    /**\n     * False if the queue exist  True if the queue no longer exists (TTL has expired). The queue will be garbage collected (deleted) if a request to create another queue is made and no the number of queues per connector has been exceeded. \n     */\n    expired?: boolean;\n}\n\nexport interface AgentConnectorQueueStatus extends _AgentConnectorQueueStatus {\n    _builtin_original?: _AgentConnectorQueueStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorQueueStatusImpl  implements _AgentConnectorQueueStatus {\n    _builtin_original?: _AgentConnectorQueueStatus = undefined;\n    public queue_name: string ;\n    public expired: boolean  | undefined ;\n    constructor(base: _AgentConnectorQueueStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'queue_name') >= 0) {\n            this.queue_name = base.queue_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'expired') >= 0) {\n            this.expired = base.expired;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorQueueStatusImpl(base: _AgentConnectorQueueStatus): AgentConnectorQueueStatusImpl {\n    return new AgentConnectorQueueStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorLocalBindStats, AgentConnectorLocalBindStats, AgentConnectorLocalBindStatsImpl, newAgentConnectorLocalBindStatsImpl } from './agentConnectorLocalBindStats';\nimport { _AgentConnectorOnDemandRoutingStats, AgentConnectorOnDemandRoutingStats, AgentConnectorOnDemandRoutingStatsImpl, newAgentConnectorOnDemandRoutingStatsImpl } from './agentConnectorOnDemandRoutingStats';\n\n\n/**\n * Statistics related to how the agent routes requests. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorRoutingStats { \n    /**\n     * The status of the addresses to which the agent is configured to bind. This will show the running address of the bind if a hostname or random port was chosen. It can also help to diagnose problems with binding. \n     */\n    local_bindings: Array<AgentConnectorLocalBindStats>;\n    on_demand?: AgentConnectorOnDemandRoutingStats;\n}\n\nexport interface AgentConnectorRoutingStats extends _AgentConnectorRoutingStats {\n    _builtin_original?: _AgentConnectorRoutingStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorRoutingStatsImpl  implements _AgentConnectorRoutingStats {\n    _builtin_original?: _AgentConnectorRoutingStats = undefined;\n    public local_bindings: Array<AgentConnectorLocalBindStats> ;\n    public on_demand: AgentConnectorOnDemandRoutingStats  | undefined ;\n    constructor(base: _AgentConnectorRoutingStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'local_bindings') >= 0) {\n            if (base.local_bindings) {\n                this.local_bindings = base.local_bindings.map((original) => newAgentConnectorLocalBindStatsImpl(original));\n            } else {\n                this.local_bindings = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'on_demand') >= 0) {\n            this.on_demand = base.on_demand;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.local_bindings !== undefined) {\n            for (const item of this.local_bindings) {\n                if (item !== undefined && (item as AgentConnectorLocalBindStatsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AgentConnectorLocalBindStatsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newAgentConnectorRoutingStatsImpl(base: _AgentConnectorRoutingStats): AgentConnectorRoutingStatsImpl {\n    return new AgentConnectorRoutingStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorPerShareStats, AgentConnectorPerShareStats, AgentConnectorPerShareStatsImpl, newAgentConnectorPerShareStatsImpl } from './agentConnectorPerShareStats';\n\n\n/**\n * Statistics related to Shares exposed by the AgentConnector. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorShareStats { \n    /**\n     * The total number of shares currently exposed.\n     */\n    exposed_shares_count: number;\n    /**\n     * Whether the server exposing shares is running.\n     */\n    server_running: boolean;\n    /**\n     * When the server was started. If the server has never started, this value will be ommitted. \n     */\n    server_start_time?: Date;\n    /**\n     * When the server was stopped. If the server has never stopped, this value will be ommitted. \n     */\n    server_stop_time?: Date;\n    /**\n     * The total number of times the share server has started\n     */\n    server_start_count: number;\n    /**\n     * The total number of times the share server has stopped\n     */\n    server_stop_count: number;\n    /**\n     * Information collected from the shares. Each share currently exposed will have a single record in this list. Shares which were once exposed, but no longer are, do not have records. If a share is later exposed, its statistics will be reset. \n     */\n    per_share_info: Array<AgentConnectorPerShareStats>;\n}\n\nexport interface AgentConnectorShareStats extends _AgentConnectorShareStats {\n    _builtin_original?: _AgentConnectorShareStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorShareStatsImpl  implements _AgentConnectorShareStats {\n    _builtin_original?: _AgentConnectorShareStats = undefined;\n    public exposed_shares_count: number ;\n    public server_running: boolean ;\n    public server_start_time: Date  | undefined ;\n    public server_stop_time: Date  | undefined ;\n    public server_start_count: number ;\n    public server_stop_count: number ;\n    public per_share_info: Array<AgentConnectorPerShareStats> ;\n    constructor(base: _AgentConnectorShareStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'exposed_shares_count') >= 0) {\n            this.exposed_shares_count = base.exposed_shares_count;\n        }\n        if (Object.keys(base).findIndex(key => key === 'server_running') >= 0) {\n            this.server_running = base.server_running;\n        }\n        if (Object.keys(base).findIndex(key => key === 'server_start_time') >= 0) {\n            this.server_start_time = base.server_start_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'server_stop_time') >= 0) {\n            this.server_stop_time = base.server_stop_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'server_start_count') >= 0) {\n            this.server_start_count = base.server_start_count;\n        }\n        if (Object.keys(base).findIndex(key => key === 'server_stop_count') >= 0) {\n            this.server_stop_count = base.server_stop_count;\n        }\n        if (Object.keys(base).findIndex(key => key === 'per_share_info') >= 0) {\n            if (base.per_share_info) {\n                this.per_share_info = base.per_share_info.map((original) => newAgentConnectorPerShareStatsImpl(original));\n            } else {\n                this.per_share_info = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.per_share_info !== undefined) {\n            for (const item of this.per_share_info) {\n                if (item !== undefined && (item as AgentConnectorPerShareStatsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AgentConnectorPerShareStatsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newAgentConnectorShareStatsImpl(base: _AgentConnectorShareStats): AgentConnectorShareStatsImpl {\n    return new AgentConnectorShareStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AdminStatus, AdminStatus, AdminStatusImpl, newAdminStatusImpl } from './adminStatus';\nimport { _ConnectorCloudRouting, ConnectorCloudRouting, ConnectorCloudRoutingImpl, newConnectorCloudRoutingImpl } from './connectorCloudRouting';\nimport { _CertificateRevocationProxy, CertificateRevocationProxy, CertificateRevocationProxyImpl, newCertificateRevocationProxyImpl } from './certificateRevocationProxy';\nimport { _AgentConnectorSpecProvisioning, AgentConnectorSpecProvisioning, AgentConnectorSpecProvisioningImpl, newAgentConnectorSpecProvisioningImpl } from './agentConnectorSpecProvisioning';\nimport { _EgressGateway, EgressGateway, EgressGatewayImpl, newEgressGatewayImpl } from './egressGateway';\nimport { _AgentConnectorCloudRouting, AgentConnectorCloudRouting, AgentConnectorCloudRoutingImpl, newAgentConnectorCloudRoutingImpl } from './agentConnectorCloudRouting';\n\n\n/**\n * The specification of the Connector\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorSpec { \n    /**\n     * A descriptive name for the connector\n     */\n    name: string;\n    /**\n     * A human readable slug to identify a resource and that is rfc1035 label compliant. The length has been restricted to 20 characters such that this name can be concatenated with other names or slugs. A slug is readOnly as it is generated by the backend resource. \n     */\n    name_slug?: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * The maximum number of connections to maintain to the cluster when stable. Note that this value may be exceeded during times of reconfiguration. A value of zero means that the connector is effectively unused by this Secure Agent. \n     */\n    max_number_connections?: number;\n    /**\n     * Overrides the default URI used to connect to this connector. This can be used to point the Secure Agent somewhere other than the default. \n     */\n    connection_uri?: string;\n    /**\n     * If service_account_enabled field is set to true, a service account will be created. If service_account_enabled field is set to false, the service account will be deleted. If the service_account_enabled field is not set no action on the service account is taken. \n     */\n    service_account_required?: boolean;\n    /**\n     * Determines whether or not the agent will expose an endpoint for local authentication\n     */\n    local_authentication_enabled?: boolean;\n    /**\n     * How a proxy tunnel is terminated.   - tcp: terminate the tunnel at a TCP socket   - inproc: terminate the tunnel at an inprocess socket Note: if not specified, the connector will choose, likely based on its version. \n     */\n    proxy_tunnel_termination?: string;\n    provisioning?: AgentConnectorSpecProvisioning;\n    routing?: AgentConnectorCloudRouting;\n    connector_cloud_routing?: ConnectorCloudRouting;\n    admin_status?: AdminStatus;\n    /**\n     * Inidicates whether traps (notifications) should be disabled for this entity. A true state indicates notifications will not be sent on transition. \n     */\n    trap_disabled?: boolean;\n    revocation_proxy?: CertificateRevocationProxy;\n    egress_gateway?: EgressGateway;\n    /**\n     * When true, the connector is considered a demo connector, and will be auto-deleted after 24 hours. \n     */\n    demo?: boolean;\n}\n\nexport interface AgentConnectorSpec extends _AgentConnectorSpec {\n    _builtin_original?: _AgentConnectorSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorSpecImpl  implements _AgentConnectorSpec {\n    _builtin_original?: _AgentConnectorSpec = undefined;\n    public name: string ;\n    public name_slug: string  | undefined ;\n    public org_id: string ;\n    public max_number_connections: number  | undefined ;\n    public connection_uri: string  | undefined ;\n    public service_account_required: boolean  | undefined ;\n    public local_authentication_enabled: boolean  | undefined ;\n    public proxy_tunnel_termination: string  | undefined ;\n    public provisioning: AgentConnectorSpecProvisioning  | undefined ;\n    public routing: AgentConnectorCloudRouting  | undefined ;\n    public connector_cloud_routing: ConnectorCloudRouting  | undefined ;\n    public admin_status: AdminStatus  | undefined ;\n    public trap_disabled: boolean  | undefined ;\n    public revocation_proxy: CertificateRevocationProxy  | undefined ;\n    public egress_gateway: EgressGateway  | undefined ;\n    public demo: boolean  | undefined ;\n    constructor(base: _AgentConnectorSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name_slug') >= 0) {\n            this.name_slug = base.name_slug;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'max_number_connections') >= 0) {\n            this.max_number_connections = base.max_number_connections;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connection_uri') >= 0) {\n            this.connection_uri = base.connection_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'service_account_required') >= 0) {\n            this.service_account_required = base.service_account_required;\n        }\n        if (Object.keys(base).findIndex(key => key === 'local_authentication_enabled') >= 0) {\n            this.local_authentication_enabled = base.local_authentication_enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'proxy_tunnel_termination') >= 0) {\n            this.proxy_tunnel_termination = base.proxy_tunnel_termination;\n        }\n        if (Object.keys(base).findIndex(key => key === 'provisioning') >= 0) {\n            this.provisioning = base.provisioning;\n        }\n        if (Object.keys(base).findIndex(key => key === 'routing') >= 0) {\n            this.routing = base.routing;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_cloud_routing') >= 0) {\n            this.connector_cloud_routing = base.connector_cloud_routing;\n        }\n        if (Object.keys(base).findIndex(key => key === 'admin_status') >= 0) {\n            this.admin_status = base.admin_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'trap_disabled') >= 0) {\n            this.trap_disabled = base.trap_disabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'revocation_proxy') >= 0) {\n            this.revocation_proxy = base.revocation_proxy;\n        }\n        if (Object.keys(base).findIndex(key => key === 'egress_gateway') >= 0) {\n            this.egress_gateway = base.egress_gateway;\n        }\n        if (Object.keys(base).findIndex(key => key === 'demo') >= 0) {\n            this.demo = base.demo;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorSpecImpl(base: _AgentConnectorSpec): AgentConnectorSpecImpl {\n    return new AgentConnectorSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Determines whether or not the agent will manage upstream user access on this connector. For example mounting shares allocated to the user automatically. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorSpecProvisioning { \n    /**\n     * Whether this agent will automatically provision all resources or not.\n     */\n    all_resources?: boolean;\n}\n\nexport interface AgentConnectorSpecProvisioning extends _AgentConnectorSpecProvisioning {\n    _builtin_original?: _AgentConnectorSpecProvisioning;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorSpecProvisioningImpl  implements _AgentConnectorSpecProvisioning {\n    _builtin_original?: _AgentConnectorSpecProvisioning = undefined;\n    public all_resources: boolean  | undefined ;\n    constructor(base: _AgentConnectorSpecProvisioning) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'all_resources') >= 0) {\n            this.all_resources = base.all_resources;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorSpecProvisioningImpl(base: _AgentConnectorSpecProvisioning): AgentConnectorSpecProvisioningImpl {\n    return new AgentConnectorSpecProvisioningImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RuntimeStatus, RuntimeStatus, RuntimeStatusImpl, newRuntimeStatusImpl } from './runtimeStatus';\n\n\n/**\n * Application Statistics and Status\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationStats { \n    /**\n     * Unique identifier\n     */\n    readonly id: string;\n    /**\n     * Unique identifier\n     */\n    readonly environment_name: string;\n    /**\n     * Unique identifier\n     */\n    readonly org_id: string;\n    runtime_status?: RuntimeStatus;\n}\n\nexport interface ApplicationStats extends _ApplicationStats {\n    _builtin_original?: _ApplicationStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationStatsImpl  implements _ApplicationStats {\n    _builtin_original?: _ApplicationStats = undefined;\n    public readonly id: string ;\n    public readonly environment_name: string ;\n    public readonly org_id: string ;\n    public runtime_status: RuntimeStatus  | undefined ;\n    constructor(base: _ApplicationStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'environment_name') >= 0) {\n            this.environment_name = base.environment_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'runtime_status') >= 0) {\n            this.runtime_status = base.runtime_status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newApplicationStatsImpl(base: _ApplicationStats): ApplicationStatsImpl {\n    return new ApplicationStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorAuthzStats, AgentConnectorAuthzStats, AgentConnectorAuthzStatsImpl, newAgentConnectorAuthzStatsImpl } from './agentConnectorAuthzStats';\nimport { _AgentConnectorShareStats, AgentConnectorShareStats, AgentConnectorShareStatsImpl, newAgentConnectorShareStatsImpl } from './agentConnectorShareStats';\nimport { _AgentConnectorProxyStats, AgentConnectorProxyStats, AgentConnectorProxyStatsImpl, newAgentConnectorProxyStatsImpl } from './agentConnectorProxyStats';\nimport { _ApplicationStats, ApplicationStats, ApplicationStatsImpl, newApplicationStatsImpl } from './applicationStats';\nimport { _AgentConnectorUserStats, AgentConnectorUserStats, AgentConnectorUserStatsImpl, newAgentConnectorUserStatsImpl } from './agentConnectorUserStats';\nimport { _AgentConnectorSystemStats, AgentConnectorSystemStats, AgentConnectorSystemStatsImpl, newAgentConnectorSystemStatsImpl } from './agentConnectorSystemStats';\nimport { _AgentConnectorTransportStats, AgentConnectorTransportStats, AgentConnectorTransportStatsImpl, newAgentConnectorTransportStatsImpl } from './agentConnectorTransportStats';\n\n\n/**\n * Statistics periodically collected from a running AgentConnector. These statistics may be used to understand how the AgentConnector is performing, diagnose issues, and so on. Note that upstream_stats may not be available unless a user has requested publication of them \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorSpecificStats { \n    system: AgentConnectorSystemStats;\n    transport: AgentConnectorTransportStats;\n    shares?: AgentConnectorShareStats;\n    authz?: AgentConnectorAuthzStats;\n    proxy?: AgentConnectorProxyStats;\n    user?: AgentConnectorUserStats;\n    /**\n     * A list of ApplicationStats\n     */\n    application_stats?: Array<ApplicationStats>;\n}\n\nexport interface AgentConnectorSpecificStats extends _AgentConnectorSpecificStats {\n    _builtin_original?: _AgentConnectorSpecificStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorSpecificStatsImpl  implements _AgentConnectorSpecificStats {\n    _builtin_original?: _AgentConnectorSpecificStats = undefined;\n    public system: AgentConnectorSystemStats ;\n    public transport: AgentConnectorTransportStats ;\n    public shares: AgentConnectorShareStats  | undefined ;\n    public authz: AgentConnectorAuthzStats  | undefined ;\n    public proxy: AgentConnectorProxyStats  | undefined ;\n    public user: AgentConnectorUserStats  | undefined ;\n    public application_stats: Array<ApplicationStats>  | undefined ;\n    constructor(base: _AgentConnectorSpecificStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'system') >= 0) {\n            this.system = base.system;\n        }\n        if (Object.keys(base).findIndex(key => key === 'transport') >= 0) {\n            this.transport = base.transport;\n        }\n        if (Object.keys(base).findIndex(key => key === 'shares') >= 0) {\n            this.shares = base.shares;\n        }\n        if (Object.keys(base).findIndex(key => key === 'authz') >= 0) {\n            this.authz = base.authz;\n        }\n        if (Object.keys(base).findIndex(key => key === 'proxy') >= 0) {\n            this.proxy = base.proxy;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user') >= 0) {\n            this.user = base.user;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_stats') >= 0) {\n            if (base.application_stats) {\n                this.application_stats = base.application_stats.map((original) => newApplicationStatsImpl(original));\n            } else {\n                this.application_stats = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.application_stats !== undefined) {\n            for (const item of this.application_stats) {\n                if (item !== undefined && (item as ApplicationStatsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationStatsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newAgentConnectorSpecificStatsImpl(base: _AgentConnectorSpecificStats): AgentConnectorSpecificStatsImpl {\n    return new AgentConnectorSpecificStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourceStatsMetadata, ResourceStatsMetadata, ResourceStatsMetadataImpl, newResourceStatsMetadataImpl } from './resourceStatsMetadata';\nimport { _ResourceSessionStats, ResourceSessionStats, ResourceSessionStatsImpl, newResourceSessionStatsImpl } from './resourceSessionStats';\nimport { _ResourceStats, ResourceStats, ResourceStatsImpl, newResourceStatsImpl } from './resourceStats';\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationServiceStats { \n    /**\n     * The unique ID of the resource. The id is provided here so that a list of resource stats can be POSTed in a single request. \n     */\n    resource_id?: string;\n    metadata?: ResourceStatsMetadata;\n    /**\n     * The summary status of the Resource. - A `good` status means that no action is neccessary on this Resource - A `warn` status means that there is an issue that should be dealt with   Examples include a forwarder resource that cannot bind to the provisioned port (eg. permission   issue binding to port 80) - A `down` status indicates that there is a service accessibility problem   that should be dealt with as soon as possible. This could mean that there is a   problem with the Resource\\'s configuration, or the platform. - A `stale` status indicates that although there may not be anything wrong,   we haven\\'t been able to update the status recently. This may indicate   a communications issue between Agilicus and the Connector containing the resource. \n     */\n    overall_status?: string;\n    /**\n     * A message pertaining to the last warning associated with the resource. This message is persistent in that it will remain when the status goes to `good`. \n     */\n    last_warning_message?: string;\n    session_stats?: ResourceSessionStats;\n}\n\nexport interface ApplicationServiceStats extends _ApplicationServiceStats {\n    _builtin_original?: _ApplicationServiceStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationServiceStatsImpl  implements _ApplicationServiceStats {\n    _builtin_original?: _ApplicationServiceStats = undefined;\n    public resource_id: string  | undefined ;\n    public metadata: ResourceStatsMetadata  | undefined ;\n    public overall_status: string  | undefined ;\n    public last_warning_message: string  | undefined ;\n    public session_stats: ResourceSessionStats  | undefined ;\n    constructor(base: _ApplicationServiceStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'resource_id') >= 0) {\n            this.resource_id = base.resource_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'overall_status') >= 0) {\n            this.overall_status = base.overall_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_warning_message') >= 0) {\n            this.last_warning_message = base.last_warning_message;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session_stats') >= 0) {\n            this.session_stats = base.session_stats;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newApplicationServiceStatsImpl(base: _ApplicationServiceStats): ApplicationServiceStatsImpl {\n    return new ApplicationServiceStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourceStatsMetadata, ResourceStatsMetadata, ResourceStatsMetadataImpl, newResourceStatsMetadataImpl } from './resourceStatsMetadata';\nimport { _ResourceSessionStats, ResourceSessionStats, ResourceSessionStatsImpl, newResourceSessionStatsImpl } from './resourceSessionStats';\nimport { _ResourceStats, ResourceStats, ResourceStatsImpl, newResourceStatsImpl } from './resourceStats';\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _FileShareServiceStats { \n    /**\n     * The unique ID of the resource. The id is provided here so that a list of resource stats can be POSTed in a single request. \n     */\n    resource_id?: string;\n    metadata?: ResourceStatsMetadata;\n    /**\n     * The summary status of the Resource. - A `good` status means that no action is neccessary on this Resource - A `warn` status means that there is an issue that should be dealt with   Examples include a forwarder resource that cannot bind to the provisioned port (eg. permission   issue binding to port 80) - A `down` status indicates that there is a service accessibility problem   that should be dealt with as soon as possible. This could mean that there is a   problem with the Resource\\'s configuration, or the platform. - A `stale` status indicates that although there may not be anything wrong,   we haven\\'t been able to update the status recently. This may indicate   a communications issue between Agilicus and the Connector containing the resource. \n     */\n    overall_status?: string;\n    /**\n     * A message pertaining to the last warning associated with the resource. This message is persistent in that it will remain when the status goes to `good`. \n     */\n    last_warning_message?: string;\n    session_stats?: ResourceSessionStats;\n}\n\nexport interface FileShareServiceStats extends _FileShareServiceStats {\n    _builtin_original?: _FileShareServiceStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FileShareServiceStatsImpl  implements _FileShareServiceStats {\n    _builtin_original?: _FileShareServiceStats = undefined;\n    public resource_id: string  | undefined ;\n    public metadata: ResourceStatsMetadata  | undefined ;\n    public overall_status: string  | undefined ;\n    public last_warning_message: string  | undefined ;\n    public session_stats: ResourceSessionStats  | undefined ;\n    constructor(base: _FileShareServiceStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'resource_id') >= 0) {\n            this.resource_id = base.resource_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'overall_status') >= 0) {\n            this.overall_status = base.overall_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_warning_message') >= 0) {\n            this.last_warning_message = base.last_warning_message;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session_stats') >= 0) {\n            this.session_stats = base.session_stats;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFileShareServiceStatsImpl(base: _FileShareServiceStats): FileShareServiceStatsImpl {\n    return new FileShareServiceStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourceStatsMetadata, ResourceStatsMetadata, ResourceStatsMetadataImpl, newResourceStatsMetadataImpl } from './resourceStatsMetadata';\nimport { _ResourceSessionStats, ResourceSessionStats, ResourceSessionStatsImpl, newResourceSessionStatsImpl } from './resourceSessionStats';\nimport { _ResourceStats, ResourceStats, ResourceStatsImpl, newResourceStatsImpl } from './resourceStats';\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _ServiceForwarderStats { \n    /**\n     * The unique ID of the resource. The id is provided here so that a list of resource stats can be POSTed in a single request. \n     */\n    resource_id?: string;\n    metadata?: ResourceStatsMetadata;\n    /**\n     * The summary status of the Resource. - A `good` status means that no action is neccessary on this Resource - A `warn` status means that there is an issue that should be dealt with   Examples include a forwarder resource that cannot bind to the provisioned port (eg. permission   issue binding to port 80) - A `down` status indicates that there is a service accessibility problem   that should be dealt with as soon as possible. This could mean that there is a   problem with the Resource\\'s configuration, or the platform. - A `stale` status indicates that although there may not be anything wrong,   we haven\\'t been able to update the status recently. This may indicate   a communications issue between Agilicus and the Connector containing the resource. \n     */\n    overall_status?: string;\n    /**\n     * A message pertaining to the last warning associated with the resource. This message is persistent in that it will remain when the status goes to `good`. \n     */\n    last_warning_message?: string;\n    session_stats?: ResourceSessionStats;\n}\n\nexport interface ServiceForwarderStats extends _ServiceForwarderStats {\n    _builtin_original?: _ServiceForwarderStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ServiceForwarderStatsImpl  implements _ServiceForwarderStats {\n    _builtin_original?: _ServiceForwarderStats = undefined;\n    public resource_id: string  | undefined ;\n    public metadata: ResourceStatsMetadata  | undefined ;\n    public overall_status: string  | undefined ;\n    public last_warning_message: string  | undefined ;\n    public session_stats: ResourceSessionStats  | undefined ;\n    constructor(base: _ServiceForwarderStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'resource_id') >= 0) {\n            this.resource_id = base.resource_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'overall_status') >= 0) {\n            this.overall_status = base.overall_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_warning_message') >= 0) {\n            this.last_warning_message = base.last_warning_message;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session_stats') >= 0) {\n            this.session_stats = base.session_stats;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newServiceForwarderStatsImpl(base: _ServiceForwarderStats): ServiceForwarderStatsImpl {\n    return new ServiceForwarderStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorAuthzStats, AgentConnectorAuthzStats, AgentConnectorAuthzStatsImpl, newAgentConnectorAuthzStatsImpl } from './agentConnectorAuthzStats';\nimport { _ConnectorStats, ConnectorStats, ConnectorStatsImpl, newConnectorStatsImpl } from './connectorStats';\nimport { _ApplicationServiceStats, ApplicationServiceStats, ApplicationServiceStatsImpl, newApplicationServiceStatsImpl } from './applicationServiceStats';\nimport { _FileShareServiceStats, FileShareServiceStats, FileShareServiceStatsImpl, newFileShareServiceStatsImpl } from './fileShareServiceStats';\nimport { _AgentConnectorProxyStats, AgentConnectorProxyStats, AgentConnectorProxyStatsImpl, newAgentConnectorProxyStatsImpl } from './agentConnectorProxyStats';\nimport { _AgentConnectorSpecificStats, AgentConnectorSpecificStats, AgentConnectorSpecificStatsImpl, newAgentConnectorSpecificStatsImpl } from './agentConnectorSpecificStats';\nimport { _ApplicationStats, ApplicationStats, ApplicationStatsImpl, newApplicationStatsImpl } from './applicationStats';\nimport { _AgentConnectorTransportStats, AgentConnectorTransportStats, AgentConnectorTransportStatsImpl, newAgentConnectorTransportStatsImpl } from './agentConnectorTransportStats';\nimport { _AgentConnectorShareStats, AgentConnectorShareStats, AgentConnectorShareStatsImpl, newAgentConnectorShareStatsImpl } from './agentConnectorShareStats';\nimport { _AgentConnectorUserStats, AgentConnectorUserStats, AgentConnectorUserStatsImpl, newAgentConnectorUserStatsImpl } from './agentConnectorUserStats';\nimport { _AgentConnectorSystemStats, AgentConnectorSystemStats, AgentConnectorSystemStatsImpl, newAgentConnectorSystemStatsImpl } from './agentConnectorSystemStats';\nimport { _ConnectorDiagnosticStats, ConnectorDiagnosticStats, ConnectorDiagnosticStatsImpl, newConnectorDiagnosticStatsImpl } from './connectorDiagnosticStats';\nimport { _ConnectorStatsMetadata, ConnectorStatsMetadata, ConnectorStatsMetadataImpl, newConnectorStatsMetadataImpl } from './connectorStatsMetadata';\nimport { _ServiceForwarderStats, ServiceForwarderStats, ServiceForwarderStatsImpl, newServiceForwarderStatsImpl } from './serviceForwarderStats';\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorStats { \n    metadata: ConnectorStatsMetadata;\n    /**\n     * The summary status of the Connector. - A `good` status means that no action is neccessary on this Connector - A `warn` status means that there is an issue that should be dealt with   Examples include connections restarting frequently. - A `down` status indicates that there is a service accessibility problem   that should be dealt with as soon as possible. This could mean that there is a   problem with the Connector\\'s configuration, or the platform. - A `stale` status indicates that although there may not be anything wrong,   we haven\\'t been able to update the status recently. This may indicate   a communications issue between Agilicus and the Connector. \n     */\n    overall_status: AgentConnectorStats.OverallStatusEnum;\n    /**\n     * A list of strings that provide more info to further identify the reason for a particular overall_status. For example, if the overall_status is `warn`, an entry in this array would provide more details as to its reason. \n     */\n    overall_status_info?: Array<string>;\n    /**\n     * An array that contains a group of stats pertaining to ServiceForwarder.  A group of stats would comprise a list of ServiceForwarder stats managed by an entity, such as an AgentConnector. \n     */\n    forwarder_stats?: Array<ServiceForwarderStats>;\n    /**\n     * An array that contains a group of stats pertaining to an ApplicationService.  A group of stats would comprise a list of ApplicationService stats managed by an entity, such as an AgentConnector. \n     */\n    app_service_stats?: Array<ApplicationServiceStats>;\n    /**\n     * An array that contains a group of stats pertaining to a FileShareService.  A group of stats would comprise a list of FileShareServiceStats stats managed by an entity, such as an AgentConnector. \n     */\n    share_service_stats?: Array<FileShareServiceStats>;\n    diagnostic_stats?: ConnectorDiagnosticStats;\n    system: AgentConnectorSystemStats;\n    transport: AgentConnectorTransportStats;\n    shares?: AgentConnectorShareStats;\n    authz?: AgentConnectorAuthzStats;\n    proxy?: AgentConnectorProxyStats;\n    user?: AgentConnectorUserStats;\n    /**\n     * A list of ApplicationStats\n     */\n    application_stats?: Array<ApplicationStats>;\n}\n\nexport interface AgentConnectorStats extends _AgentConnectorStats {\n    _builtin_original?: _AgentConnectorStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorStatsImpl  implements _AgentConnectorStats {\n    _builtin_original?: _AgentConnectorStats = undefined;\n    public metadata: ConnectorStatsMetadata ;\n    public overall_status: AgentConnectorStats.OverallStatusEnum ;\n    public overall_status_info: Array<string>  | undefined ;\n    public forwarder_stats: Array<ServiceForwarderStats>  | undefined ;\n    public app_service_stats: Array<ApplicationServiceStats>  | undefined ;\n    public share_service_stats: Array<FileShareServiceStats>  | undefined ;\n    public diagnostic_stats: ConnectorDiagnosticStats  | undefined ;\n    public system: AgentConnectorSystemStats ;\n    public transport: AgentConnectorTransportStats ;\n    public shares: AgentConnectorShareStats  | undefined ;\n    public authz: AgentConnectorAuthzStats  | undefined ;\n    public proxy: AgentConnectorProxyStats  | undefined ;\n    public user: AgentConnectorUserStats  | undefined ;\n    public application_stats: Array<ApplicationStats>  | undefined ;\n    constructor(base: _AgentConnectorStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'overall_status') >= 0) {\n            this.overall_status = base.overall_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'overall_status_info') >= 0) {\n            this.overall_status_info = base.overall_status_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'forwarder_stats') >= 0) {\n            if (base.forwarder_stats) {\n                this.forwarder_stats = base.forwarder_stats.map((original) => newServiceForwarderStatsImpl(original));\n            } else {\n                this.forwarder_stats = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'app_service_stats') >= 0) {\n            if (base.app_service_stats) {\n                this.app_service_stats = base.app_service_stats.map((original) => newApplicationServiceStatsImpl(original));\n            } else {\n                this.app_service_stats = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'share_service_stats') >= 0) {\n            if (base.share_service_stats) {\n                this.share_service_stats = base.share_service_stats.map((original) => newFileShareServiceStatsImpl(original));\n            } else {\n                this.share_service_stats = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'diagnostic_stats') >= 0) {\n            this.diagnostic_stats = base.diagnostic_stats;\n        }\n        if (Object.keys(base).findIndex(key => key === 'system') >= 0) {\n            this.system = base.system;\n        }\n        if (Object.keys(base).findIndex(key => key === 'transport') >= 0) {\n            this.transport = base.transport;\n        }\n        if (Object.keys(base).findIndex(key => key === 'shares') >= 0) {\n            this.shares = base.shares;\n        }\n        if (Object.keys(base).findIndex(key => key === 'authz') >= 0) {\n            this.authz = base.authz;\n        }\n        if (Object.keys(base).findIndex(key => key === 'proxy') >= 0) {\n            this.proxy = base.proxy;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user') >= 0) {\n            this.user = base.user;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_stats') >= 0) {\n            if (base.application_stats) {\n                this.application_stats = base.application_stats.map((original) => newApplicationStatsImpl(original));\n            } else {\n                this.application_stats = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.forwarder_stats !== undefined) {\n            for (const item of this.forwarder_stats) {\n                if (item !== undefined && (item as ServiceForwarderStatsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ServiceForwarderStatsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.app_service_stats !== undefined) {\n            for (const item of this.app_service_stats) {\n                if (item !== undefined && (item as ApplicationServiceStatsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationServiceStatsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.share_service_stats !== undefined) {\n            for (const item of this.share_service_stats) {\n                if (item !== undefined && (item as FileShareServiceStatsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as FileShareServiceStatsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.application_stats !== undefined) {\n            for (const item of this.application_stats) {\n                if (item !== undefined && (item as ApplicationStatsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationStatsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace AgentConnectorStats {\n    export type OverallStatusEnum = 'good' | 'warn' | 'down' | 'stale';\n    export const OverallStatusEnum = {\n        good: 'good' as OverallStatusEnum,\n        warn: 'warn' as OverallStatusEnum,\n        down: 'down' as OverallStatusEnum,\n        stale: 'stale' as OverallStatusEnum\n    };\n}\n\n\nexport function newAgentConnectorStatsImpl(base: _AgentConnectorStats): AgentConnectorStatsImpl {\n    return new AgentConnectorStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorStats, AgentConnectorStats, AgentConnectorStatsImpl, newAgentConnectorStatsImpl } from './agentConnectorStats';\nimport { _AgentConnectorInfo, AgentConnectorInfo, AgentConnectorInfoImpl, newAgentConnectorInfoImpl } from './agentConnectorInfo';\nimport { _StatsPublishingConnectorConfig, StatsPublishingConnectorConfig, StatsPublishingConnectorConfigImpl, newStatsPublishingConnectorConfigImpl } from './statsPublishingConnectorConfig';\nimport { _AgentLocalAuthInfo, AgentLocalAuthInfo, AgentLocalAuthInfoImpl, newAgentLocalAuthInfoImpl } from './agentLocalAuthInfo';\nimport { _EgressGateway, EgressGateway, EgressGatewayImpl, newEgressGatewayImpl } from './egressGateway';\nimport { _OperationalStatus, OperationalStatus, OperationalStatusImpl, newOperationalStatusImpl } from './operationalStatus';\nimport { _ApplicationService, ApplicationService, ApplicationServiceImpl, newApplicationServiceImpl } from './applicationService';\n\n\n/**\n * Status information pertaining to a Connector. Note that stats will only be returned if explicitly requested. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorStatus { \n    /**\n     * The list of application services associated with this agent\n     */\n    application_services?: Array<ApplicationService>;\n    /**\n     * Service account user GUID used to deploy the connector\n     */\n    service_account_id?: string;\n    /**\n     * Number of AgentConnectorInstances that have been created for this connector_id lifetime.\n     */\n    num_instances_lifetime?: number;\n    info?: AgentConnectorInfo;\n    stats?: AgentConnectorStats;\n    local_authentication?: AgentLocalAuthInfo;\n    operational_status?: OperationalStatus;\n    stats_publishing?: StatsPublishingConnectorConfig;\n    egress_gateway?: EgressGateway;\n}\n\nexport interface AgentConnectorStatus extends _AgentConnectorStatus {\n    _builtin_original?: _AgentConnectorStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorStatusImpl  implements _AgentConnectorStatus {\n    _builtin_original?: _AgentConnectorStatus = undefined;\n    public application_services: Array<ApplicationService>  | undefined ;\n    public service_account_id: string  | undefined ;\n    public num_instances_lifetime: number  | undefined ;\n    public info: AgentConnectorInfo  | undefined ;\n    public stats: AgentConnectorStats  | undefined ;\n    public local_authentication: AgentLocalAuthInfo  | undefined ;\n    public operational_status: OperationalStatus  | undefined ;\n    public stats_publishing: StatsPublishingConnectorConfig  | undefined ;\n    public egress_gateway: EgressGateway  | undefined ;\n    constructor(base: _AgentConnectorStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'application_services') >= 0) {\n            if (base.application_services) {\n                this.application_services = base.application_services.map((original) => newApplicationServiceImpl(original));\n            } else {\n                this.application_services = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'service_account_id') >= 0) {\n            this.service_account_id = base.service_account_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'num_instances_lifetime') >= 0) {\n            this.num_instances_lifetime = base.num_instances_lifetime;\n        }\n        if (Object.keys(base).findIndex(key => key === 'info') >= 0) {\n            this.info = base.info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'stats') >= 0) {\n            this.stats = base.stats;\n        }\n        if (Object.keys(base).findIndex(key => key === 'local_authentication') >= 0) {\n            this.local_authentication = base.local_authentication;\n        }\n        if (Object.keys(base).findIndex(key => key === 'operational_status') >= 0) {\n            this.operational_status = base.operational_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'stats_publishing') >= 0) {\n            this.stats_publishing = base.stats_publishing;\n        }\n        if (Object.keys(base).findIndex(key => key === 'egress_gateway') >= 0) {\n            this.egress_gateway = base.egress_gateway;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.application_services !== undefined) {\n            for (const item of this.application_services) {\n                if (item !== undefined && (item as ApplicationServiceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationServiceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newAgentConnectorStatusImpl(base: _AgentConnectorStatus): AgentConnectorStatusImpl {\n    return new AgentConnectorStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MemoryInfo, MemoryInfo, MemoryInfoImpl, newMemoryInfoImpl } from './memoryInfo';\nimport { _OSInfo, OSInfo, OSInfoImpl, newOSInfoImpl } from './oSInfo';\nimport { _CpuInfo, CpuInfo, CpuInfoImpl, newCpuInfoImpl } from './cpuInfo';\nimport { _StorageInfo, StorageInfo, StorageInfoImpl, newStorageInfoImpl } from './storageInfo';\nimport { _ConnectorStatsMetadata, ConnectorStatsMetadata, ConnectorStatsMetadataImpl, newConnectorStatsMetadataImpl } from './connectorStatsMetadata';\nimport { _KernelInfo, KernelInfo, KernelInfoImpl, newKernelInfoImpl } from './kernelInfo';\n\n\n/**\n * System information for a connector instance. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorSystemInfo { \n    metadata?: ConnectorStatsMetadata;\n    os_info?: OSInfo;\n    kernel_info?: KernelInfo;\n    cpu_info?: CpuInfo;\n    memory_info?: MemoryInfo;\n    storage_info?: StorageInfo;\n}\n\nexport interface AgentConnectorSystemInfo extends _AgentConnectorSystemInfo {\n    _builtin_original?: _AgentConnectorSystemInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorSystemInfoImpl  implements _AgentConnectorSystemInfo {\n    _builtin_original?: _AgentConnectorSystemInfo = undefined;\n    public metadata: ConnectorStatsMetadata  | undefined ;\n    public os_info: OSInfo  | undefined ;\n    public kernel_info: KernelInfo  | undefined ;\n    public cpu_info: CpuInfo  | undefined ;\n    public memory_info: MemoryInfo  | undefined ;\n    public storage_info: StorageInfo  | undefined ;\n    constructor(base: _AgentConnectorSystemInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'os_info') >= 0) {\n            this.os_info = base.os_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'kernel_info') >= 0) {\n            this.kernel_info = base.kernel_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'cpu_info') >= 0) {\n            this.cpu_info = base.cpu_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'memory_info') >= 0) {\n            this.memory_info = base.memory_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'storage_info') >= 0) {\n            this.storage_info = base.storage_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorSystemInfoImpl(base: _AgentConnectorSystemInfo): AgentConnectorSystemInfoImpl {\n    return new AgentConnectorSystemInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Information about the AgentConnector itself, as well as the system on which it runs. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorSystemStats { \n    /**\n     * The version of the operating system on which the AgentConnector is running.\n     */\n    os_version: string;\n    /**\n     * The length of time, in seconds, the operating system has been running.\n     */\n    os_uptime: number;\n    /**\n     * The length of time, in seconds, the AgentConnector has been running. If the AgentConnector restarts, this value will reset to zero. \n     */\n    agent_uptime: number;\n    /**\n     * The version of software currently running for this AgentConnector. This includes both the version number and the commit reference from which it was built. \n     */\n    agent_version: string;\n    /**\n     * The release train followed by the AgentConnector. It uses this when checking for updates to determine which version of the AgentConnector should be installed. \n     */\n    agent_release_train?: string;\n    /**\n     * The identifier of the AgentConnector publishing these statistics. The AgentConnector publishes this information in order to ensure that an AgentConnector does not accidentally publish to the wrong endpoint. \n     */\n    agent_connector_id: string;\n    /**\n     * The organisation identifier of the AgentConnector publishing these statistics. The AgentConnector publishes this information in order to ensure that an AgentConnector does not accidentally publish to the wrong endpoint. \n     */\n    agent_connector_org_id: string;\n    /**\n     * The hostname of the computer on which the AgentConnector is running.\n     */\n    hostname?: string;\n    /**\n     * The date-time when the connector last updated its running configuration from the API. \n     */\n    config_update_time?: Date;\n    /**\n     * The connector_instance_id (if applicable). \n     */\n    connector_instance_id?: string;\n    /**\n     * True if connector has correct permissions to its working directory and config files, false otherwise. \n     */\n    correct_file_permissions?: boolean;\n}\n\nexport interface AgentConnectorSystemStats extends _AgentConnectorSystemStats {\n    _builtin_original?: _AgentConnectorSystemStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorSystemStatsImpl  implements _AgentConnectorSystemStats {\n    _builtin_original?: _AgentConnectorSystemStats = undefined;\n    public os_version: string ;\n    public os_uptime: number ;\n    public agent_uptime: number ;\n    public agent_version: string ;\n    public agent_release_train: string  | undefined ;\n    public agent_connector_id: string ;\n    public agent_connector_org_id: string ;\n    public hostname: string  | undefined ;\n    public config_update_time: Date  | undefined ;\n    public connector_instance_id: string  | undefined ;\n    public correct_file_permissions: boolean  | undefined ;\n    constructor(base: _AgentConnectorSystemStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'os_version') >= 0) {\n            this.os_version = base.os_version;\n        }\n        if (Object.keys(base).findIndex(key => key === 'os_uptime') >= 0) {\n            this.os_uptime = base.os_uptime;\n        }\n        if (Object.keys(base).findIndex(key => key === 'agent_uptime') >= 0) {\n            this.agent_uptime = base.agent_uptime;\n        }\n        if (Object.keys(base).findIndex(key => key === 'agent_version') >= 0) {\n            this.agent_version = base.agent_version;\n        }\n        if (Object.keys(base).findIndex(key => key === 'agent_release_train') >= 0) {\n            this.agent_release_train = base.agent_release_train;\n        }\n        if (Object.keys(base).findIndex(key => key === 'agent_connector_id') >= 0) {\n            this.agent_connector_id = base.agent_connector_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'agent_connector_org_id') >= 0) {\n            this.agent_connector_org_id = base.agent_connector_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'hostname') >= 0) {\n            this.hostname = base.hostname;\n        }\n        if (Object.keys(base).findIndex(key => key === 'config_update_time') >= 0) {\n            this.config_update_time = base.config_update_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_instance_id') >= 0) {\n            this.connector_instance_id = base.connector_instance_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'correct_file_permissions') >= 0) {\n            this.correct_file_permissions = base.correct_file_permissions;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorSystemStatsImpl(base: _AgentConnectorSystemStats): AgentConnectorSystemStatsImpl {\n    return new AgentConnectorSystemStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Tunnel Statistics\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PerTunnelStats { \n    /**\n     * The IP address from which the connector established this tunnel.\n     */\n    ip_address: string;\n    /**\n     * The hostname of the cluster the connector connects to.\n     */\n    tunnel_host?: string;\n    /**\n     * The index of the router instance within its cluster\n     */\n    index?: string;\n    /**\n     * Whether or not the tunnel is currently connected \n     */\n    connected?: boolean;\n}\n\nexport interface PerTunnelStats extends _PerTunnelStats {\n    _builtin_original?: _PerTunnelStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PerTunnelStatsImpl  implements _PerTunnelStats {\n    _builtin_original?: _PerTunnelStats = undefined;\n    public ip_address: string ;\n    public tunnel_host: string  | undefined ;\n    public index: string  | undefined ;\n    public connected: boolean  | undefined ;\n    constructor(base: _PerTunnelStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'ip_address') >= 0) {\n            this.ip_address = base.ip_address;\n        }\n        if (Object.keys(base).findIndex(key => key === 'tunnel_host') >= 0) {\n            this.tunnel_host = base.tunnel_host;\n        }\n        if (Object.keys(base).findIndex(key => key === 'index') >= 0) {\n            this.index = base.index;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connected') >= 0) {\n            this.connected = base.connected;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newPerTunnelStatsImpl(base: _PerTunnelStats): PerTunnelStatsImpl {\n    return new PerTunnelStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorRoutingStats, AgentConnectorRoutingStats, AgentConnectorRoutingStatsImpl, newAgentConnectorRoutingStatsImpl } from './agentConnectorRoutingStats';\nimport { _PerTunnelStats, PerTunnelStats, PerTunnelStatsImpl, newPerTunnelStatsImpl } from './perTunnelStats';\n\n\n/**\n * Statistics related to the transfer of data through the AgentConnector. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorTransportStats { \n    /**\n     * The number of currently active connections. \n     */\n    active_connections: number;\n    /**\n     * The number of connections which should be in an active state. Note that this may be less than active_connections if the AgentConnector is currently applying configuration changes. It may be more than active_connections if there is a connectivity issue, or connections are first starting. \n     */\n    target_number_connections: number;\n    /**\n     * The number of times connections have been started \n     */\n    connection_start_count: number;\n    /**\n     * The number of times connections have stopped \n     */\n    connection_stop_count: number;\n    routing?: AgentConnectorRoutingStats;\n    /**\n     * Information about each tunnel maintained by the connector. \n     */\n    per_tunnel_stats?: Array<PerTunnelStats>;\n}\n\nexport interface AgentConnectorTransportStats extends _AgentConnectorTransportStats {\n    _builtin_original?: _AgentConnectorTransportStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorTransportStatsImpl  implements _AgentConnectorTransportStats {\n    _builtin_original?: _AgentConnectorTransportStats = undefined;\n    public active_connections: number ;\n    public target_number_connections: number ;\n    public connection_start_count: number ;\n    public connection_stop_count: number ;\n    public routing: AgentConnectorRoutingStats  | undefined ;\n    public per_tunnel_stats: Array<PerTunnelStats>  | undefined ;\n    constructor(base: _AgentConnectorTransportStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'active_connections') >= 0) {\n            this.active_connections = base.active_connections;\n        }\n        if (Object.keys(base).findIndex(key => key === 'target_number_connections') >= 0) {\n            this.target_number_connections = base.target_number_connections;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connection_start_count') >= 0) {\n            this.connection_start_count = base.connection_start_count;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connection_stop_count') >= 0) {\n            this.connection_stop_count = base.connection_stop_count;\n        }\n        if (Object.keys(base).findIndex(key => key === 'routing') >= 0) {\n            this.routing = base.routing;\n        }\n        if (Object.keys(base).findIndex(key => key === 'per_tunnel_stats') >= 0) {\n            if (base.per_tunnel_stats) {\n                this.per_tunnel_stats = base.per_tunnel_stats.map((original) => newPerTunnelStatsImpl(original));\n            } else {\n                this.per_tunnel_stats = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.per_tunnel_stats !== undefined) {\n            for (const item of this.per_tunnel_stats) {\n                if (item !== undefined && (item as PerTunnelStatsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as PerTunnelStatsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newAgentConnectorTransportStatsImpl(base: _AgentConnectorTransportStats): AgentConnectorTransportStatsImpl {\n    return new AgentConnectorTransportStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Modifies the default behaviour of how an agent connector exposes its tunnels. For example, this allows the agent to route TCP tunnels using hostnames which only resolve on the network in which it is installed. Note that the agent connector will typically only route on these hostnames if a LocalBind has been configured. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorTunnelInfo { \n    /**\n     * A list of domain names the agent will listen to for routing tunnels. Typically these will be a hosts which resolve locally within the network for short-circuting purposes. \n     */\n    hosts: Array<string> | null;\n    /**\n     * A list of point of presence routers to which the connector will establish tunnels. \n     */\n    pop_domains?: Array<string> | null;\n}\n\nexport interface AgentConnectorTunnelInfo extends _AgentConnectorTunnelInfo {\n    _builtin_original?: _AgentConnectorTunnelInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorTunnelInfoImpl  implements _AgentConnectorTunnelInfo {\n    _builtin_original?: _AgentConnectorTunnelInfo = undefined;\n    public hosts: Array<string> | null ;\n    public pop_domains: Array<string> | null  | undefined ;\n    constructor(base: _AgentConnectorTunnelInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'hosts') >= 0) {\n            this.hosts = base.hosts;\n        }\n        if (Object.keys(base).findIndex(key => key === 'pop_domains') >= 0) {\n            this.pop_domains = base.pop_domains;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorTunnelInfoImpl(base: _AgentConnectorTunnelInfo): AgentConnectorTunnelInfoImpl {\n    return new AgentConnectorTunnelInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configuration for how agent connectors establish and run their tunnels. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorTunneling { \n    /**\n     * Whether or not agent-connect dynamic routes are enabled. If true, then the routes are enabled for any routers which support them. If false, then they are disabled for the entire connector. If null or omitted, then they will fall back on the system default. \n     */\n    dynamic_routes_enabled?: boolean | null;\n    /**\n     * Whether or not agent-connect on demand routes are enabled. If true, then the connector will only establish tunnels (and their routes) when a router has requested one. If false, then the connector will establish tunnels to all points of presence to which it is associated. If null or omitted, then they will fall back on the system default. \n     */\n    on_demand_routes_enabled?: boolean | null;\n}\n\nexport interface AgentConnectorTunneling extends _AgentConnectorTunneling {\n    _builtin_original?: _AgentConnectorTunneling;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorTunnelingImpl  implements _AgentConnectorTunneling {\n    _builtin_original?: _AgentConnectorTunneling = undefined;\n    public dynamic_routes_enabled: boolean | null  | undefined ;\n    public on_demand_routes_enabled: boolean | null  | undefined ;\n    constructor(base: _AgentConnectorTunneling) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'dynamic_routes_enabled') >= 0) {\n            this.dynamic_routes_enabled = base.dynamic_routes_enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'on_demand_routes_enabled') >= 0) {\n            this.on_demand_routes_enabled = base.on_demand_routes_enabled;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentConnectorTunnelingImpl(base: _AgentConnectorTunneling): AgentConnectorTunnelingImpl {\n    return new AgentConnectorTunnelingImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorPerUserStats, AgentConnectorPerUserStats, AgentConnectorPerUserStatsImpl, newAgentConnectorPerUserStatsImpl } from './agentConnectorPerUserStats';\n\n\n/**\n * The user status for an agent, eg. when a user last logged in \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentConnectorUserStats { \n    /**\n     * The status for any user connector functionality for this agent \n     */\n    user_stats: Array<AgentConnectorPerUserStats>;\n}\n\nexport interface AgentConnectorUserStats extends _AgentConnectorUserStats {\n    _builtin_original?: _AgentConnectorUserStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentConnectorUserStatsImpl  implements _AgentConnectorUserStats {\n    _builtin_original?: _AgentConnectorUserStats = undefined;\n    public user_stats: Array<AgentConnectorPerUserStats> ;\n    constructor(base: _AgentConnectorUserStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_stats') >= 0) {\n            if (base.user_stats) {\n                this.user_stats = base.user_stats.map((original) => newAgentConnectorPerUserStatsImpl(original));\n            } else {\n                this.user_stats = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.user_stats !== undefined) {\n            for (const item of this.user_stats) {\n                if (item !== undefined && (item as AgentConnectorPerUserStatsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AgentConnectorPerUserStatsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newAgentConnectorUserStatsImpl(base: _AgentConnectorUserStats): AgentConnectorUserStatsImpl {\n    return new AgentConnectorUserStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configuration for the agent when performing local authentication\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AgentLocalAuthInfo { \n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * A PEM encoded key that is used by clients to sign authentication credentials submitted to the agent when performing local authentication.\n     */\n    local_authentication_public_key: string;\n}\n\nexport interface AgentLocalAuthInfo extends _AgentLocalAuthInfo {\n    _builtin_original?: _AgentLocalAuthInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AgentLocalAuthInfoImpl  implements _AgentLocalAuthInfo {\n    _builtin_original?: _AgentLocalAuthInfo = undefined;\n    public org_id: string ;\n    public local_authentication_public_key: string ;\n    constructor(base: _AgentLocalAuthInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'local_authentication_public_key') >= 0) {\n            this.local_authentication_public_key = base.local_authentication_public_key;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAgentLocalAuthInfoImpl(base: _AgentLocalAuthInfo): AgentLocalAuthInfoImpl {\n    return new AgentLocalAuthInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An object that provides the methods and paths that will be allowed for a particular host. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AllowRuleCompiled { \n    /**\n     * A list of HTTP paths \n     */\n    paths?: Array<string>;\n    /**\n     * The HTTP methods to allow. If any of the listed methods are matched, then this portion of the rule matches. \n     */\n    methods?: Array<AllowRuleCompiled.MethodsEnum>;\n    /**\n     * If true, the authorization scope allows any authenticated user the methods/paths outlined in this rule. If false, the user does not require authentication. \n     */\n    any_auth_user?: boolean;\n}\n\nexport interface AllowRuleCompiled extends _AllowRuleCompiled {\n    _builtin_original?: _AllowRuleCompiled;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AllowRuleCompiledImpl  implements _AllowRuleCompiled {\n    _builtin_original?: _AllowRuleCompiled = undefined;\n    public paths: Array<string>  | undefined ;\n    public methods: Array<AllowRuleCompiled.MethodsEnum>  | undefined ;\n    public any_auth_user: boolean  | undefined ;\n    constructor(base: _AllowRuleCompiled) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'paths') >= 0) {\n            this.paths = base.paths;\n        }\n        if (Object.keys(base).findIndex(key => key === 'methods') >= 0) {\n            this.methods = base.methods;\n        }\n        if (Object.keys(base).findIndex(key => key === 'any_auth_user') >= 0) {\n            this.any_auth_user = base.any_auth_user;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace AllowRuleCompiled {\n    export type MethodsEnum = 'get' | 'put' | 'post' | 'delete' | 'head' | 'options' | 'connect' | 'trace' | 'patch' | 'copy' | 'lock' | 'mkcol' | 'move' | 'propfind' | 'proppatch' | 'unlock' | 'all';\n    export const MethodsEnum = {\n        get: 'get' as MethodsEnum,\n        put: 'put' as MethodsEnum,\n        post: 'post' as MethodsEnum,\n        delete: 'delete' as MethodsEnum,\n        head: 'head' as MethodsEnum,\n        options: 'options' as MethodsEnum,\n        connect: 'connect' as MethodsEnum,\n        trace: 'trace' as MethodsEnum,\n        patch: 'patch' as MethodsEnum,\n        copy: 'copy' as MethodsEnum,\n        lock: 'lock' as MethodsEnum,\n        mkcol: 'mkcol' as MethodsEnum,\n        move: 'move' as MethodsEnum,\n        propfind: 'propfind' as MethodsEnum,\n        proppatch: 'proppatch' as MethodsEnum,\n        unlock: 'unlock' as MethodsEnum,\n        all: 'all' as MethodsEnum\n    };\n}\n\n\nexport function newAllowRuleCompiledImpl(base: _AllowRuleCompiled): AllowRuleCompiledImpl {\n    return new AllowRuleCompiledImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LearningModeSpec, LearningModeSpec, LearningModeSpecImpl, newLearningModeSpecImpl } from './learningModeSpec';\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _AlternateModeSetting { \n    learning_mode?: LearningModeSpec;\n    /**\n     * If enabled the launcher will run in diagnostic mode. It will keep a terminal window open and set the log level to debug. \n     */\n    diagnostic_mode?: boolean;\n}\n\nexport interface AlternateModeSetting extends _AlternateModeSetting {\n    _builtin_original?: _AlternateModeSetting;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AlternateModeSettingImpl  implements _AlternateModeSetting {\n    _builtin_original?: _AlternateModeSetting = undefined;\n    public learning_mode: LearningModeSpec  | undefined ;\n    public diagnostic_mode: boolean  | undefined ;\n    constructor(base: _AlternateModeSetting) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'learning_mode') >= 0) {\n            this.learning_mode = base.learning_mode;\n        }\n        if (Object.keys(base).findIndex(key => key === 'diagnostic_mode') >= 0) {\n            this.diagnostic_mode = base.diagnostic_mode;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAlternateModeSettingImpl(base: _AlternateModeSetting): AlternateModeSettingImpl {\n    return new AlternateModeSettingImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LearningModeSpec, LearningModeSpec, LearningModeSpecImpl, newLearningModeSpecImpl } from './learningModeSpec';\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _AlternateModeStatus { \n    learning_mode?: LearningModeSpec;\n    /**\n     * If enabled the launcher will run in diagnostic mode. It will keep a terminal window open and set the log level to debug. \n     */\n    diagnostic_mode?: boolean;\n}\n\nexport interface AlternateModeStatus extends _AlternateModeStatus {\n    _builtin_original?: _AlternateModeStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AlternateModeStatusImpl  implements _AlternateModeStatus {\n    _builtin_original?: _AlternateModeStatus = undefined;\n    public learning_mode: LearningModeSpec  | undefined ;\n    public diagnostic_mode: boolean  | undefined ;\n    constructor(base: _AlternateModeStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'learning_mode') >= 0) {\n            this.learning_mode = base.learning_mode;\n        }\n        if (Object.keys(base).findIndex(key => key === 'diagnostic_mode') >= 0) {\n            this.diagnostic_mode = base.diagnostic_mode;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAlternateModeStatusImpl(base: _AlternateModeStatus): AlternateModeStatusImpl {\n    return new AlternateModeStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Each instance maps a particular query parameter to a set of constraints.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RuleQueryParameter { \n    /**\n     * The name of the query parameter.\n     */\n    name: string;\n    /**\n     * The given query parameter must exist and equal this. Can be templatized with jinja2 using the definitions collection.  This property has been updated to support regex style matching. For regex, set the match_type to \\'regex\\'. \n     */\n    exact_match?: string;\n    /**\n     * The default match_type (when ommitted) is \\'exact\\', for backwards compatibility. Other match types supported is \\'regex\\'. \n     */\n    match_type?: string;\n}\n\nexport interface RuleQueryParameter extends _RuleQueryParameter {\n    _builtin_original?: _RuleQueryParameter;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RuleQueryParameterImpl  implements _RuleQueryParameter {\n    _builtin_original?: _RuleQueryParameter = undefined;\n    public name: string ;\n    public exact_match: string  | undefined ;\n    public match_type: string  | undefined ;\n    constructor(base: _RuleQueryParameter) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'exact_match') >= 0) {\n            this.exact_match = base.exact_match;\n        }\n        if (Object.keys(base).findIndex(key => key === 'match_type') >= 0) {\n            this.match_type = base.match_type;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newRuleQueryParameterImpl(base: _RuleQueryParameter): RuleQueryParameterImpl {\n    return new RuleQueryParameterImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RuleQueryParameter, RuleQueryParameter, RuleQueryParameterImpl, newRuleQueryParameterImpl } from './ruleQueryParameter';\nimport { _RuleQueryBody, RuleQueryBody, RuleQueryBodyImpl, newRuleQueryBodyImpl } from './ruleQueryBody';\n\n\n/**\n * Rule\\'s properties\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Rule { \n    /**\n     * hostname to apply authz rule to. Deprecated. This is now inferred from the Environment or Service to which the rule belongs. \n     */\n    host?: string;\n    /**\n     * A meaningful name to help identifiy the rule. This may be used to refer to it elsewhere, or to at a glace understand its purpose. \n     */\n    name: string;\n    /**\n     * The HTTP method to allow.\n     */\n    method: Rule.MethodEnum;\n    /**\n     * regex for HTTP path. Can be templatized with jinja2 using definitions collection.\n     */\n    path: string;\n    /**\n     * A set of constraints on the parameters specified in the query string.\n     */\n    query_parameters?: Array<RuleQueryParameter>;\n    body?: RuleQueryBody;\n}\n\nexport interface Rule extends _Rule {\n    _builtin_original?: _Rule;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RuleImpl  implements _Rule {\n    _builtin_original?: _Rule = undefined;\n    public host: string  | undefined ;\n    public name: string ;\n    public method: Rule.MethodEnum ;\n    public path: string ;\n    public query_parameters: Array<RuleQueryParameter>  | undefined ;\n    public body: RuleQueryBody  | undefined ;\n    constructor(base: _Rule) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'host') >= 0) {\n            this.host = base.host;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'method') >= 0) {\n            this.method = base.method;\n        }\n        if (Object.keys(base).findIndex(key => key === 'path') >= 0) {\n            this.path = base.path;\n        }\n        if (Object.keys(base).findIndex(key => key === 'query_parameters') >= 0) {\n            if (base.query_parameters) {\n                this.query_parameters = base.query_parameters.map((original) => newRuleQueryParameterImpl(original));\n            } else {\n                this.query_parameters = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'body') >= 0) {\n            this.body = base.body;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.query_parameters !== undefined) {\n            for (const item of this.query_parameters) {\n                if (item !== undefined && (item as RuleQueryParameterImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RuleQueryParameterImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace Rule {\n    export type MethodEnum = 'get' | 'put' | 'post' | 'delete' | 'head' | 'options' | 'connect' | 'trace' | 'patch' | 'copy' | 'lock' | 'mkcol' | 'move' | 'propfind' | 'proppatch' | 'unlock' | 'all';\n    export const MethodEnum = {\n        get: 'get' as MethodEnum,\n        put: 'put' as MethodEnum,\n        post: 'post' as MethodEnum,\n        delete: 'delete' as MethodEnum,\n        head: 'head' as MethodEnum,\n        options: 'options' as MethodEnum,\n        connect: 'connect' as MethodEnum,\n        trace: 'trace' as MethodEnum,\n        patch: 'patch' as MethodEnum,\n        copy: 'copy' as MethodEnum,\n        lock: 'lock' as MethodEnum,\n        mkcol: 'mkcol' as MethodEnum,\n        move: 'move' as MethodEnum,\n        propfind: 'propfind' as MethodEnum,\n        proppatch: 'proppatch' as MethodEnum,\n        unlock: 'unlock' as MethodEnum,\n        all: 'all' as MethodEnum\n    };\n}\n\n\nexport function newRuleImpl(base: _Rule): RuleImpl {\n    return new RuleImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Rule, Rule, RuleImpl, newRuleImpl } from './rule';\n\n\n/**\n * Role\\'s properties\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Role { \n    /**\n     * role name\n     */\n    name: string;\n    /**\n     * list of rules for the role\n     */\n    rules?: Array<Rule>;\n}\n\nexport interface Role extends _Role {\n    _builtin_original?: _Role;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RoleImpl  implements _Role {\n    _builtin_original?: _Role = undefined;\n    public name: string ;\n    public rules: Array<Rule>  | undefined ;\n    constructor(base: _Role) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'rules') >= 0) {\n            if (base.rules) {\n                this.rules = base.rules.map((original) => newRuleImpl(original));\n            } else {\n                this.rules = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.rules !== undefined) {\n            for (const item of this.rules) {\n                if (item !== undefined && (item as RuleImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RuleImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newRoleImpl(base: _Role): RoleImpl {\n    return new RoleImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Application assignment\\'s properties\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationAssignment { \n    /**\n     * The unique identifier for the assignment.\n     */\n    readonly id?: string;\n    /**\n     * The unique identifier for the organisation which is being given access to the application environment. \n     */\n    org_id: string;\n    /**\n     * The name of the environment of the application for which to give access. \n     */\n    environment_name: string;\n    /**\n     * The display name for the application for which to give access. Provided on get for convenience. Do not set the field for modifying operations as it will be ignored. \n     */\n    readonly application_name?: string;\n}\n\nexport interface ApplicationAssignment extends _ApplicationAssignment {\n    _builtin_original?: _ApplicationAssignment;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationAssignmentImpl  implements _ApplicationAssignment {\n    _builtin_original?: _ApplicationAssignment = undefined;\n    public readonly id: string  | undefined ;\n    public org_id: string ;\n    public environment_name: string ;\n    public readonly application_name: string  | undefined ;\n    constructor(base: _ApplicationAssignment) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'environment_name') >= 0) {\n            this.environment_name = base.environment_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_name') >= 0) {\n            this.application_name = base.application_name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newApplicationAssignmentImpl(base: _ApplicationAssignment): ApplicationAssignmentImpl {\n    return new ApplicationAssignmentImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Definition\\'s properties\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Definition { \n    /**\n     * definition key\n     */\n    key: string;\n    /**\n     * definition value, formatted as json path\n     */\n    value: string;\n}\n\nexport interface Definition extends _Definition {\n    _builtin_original?: _Definition;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DefinitionImpl  implements _Definition {\n    _builtin_original?: _Definition = undefined;\n    public key: string ;\n    public value: string ;\n    constructor(base: _Definition) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'key') >= 0) {\n            this.key = base.key;\n        }\n        if (Object.keys(base).findIndex(key => key === 'value') >= 0) {\n            this.value = base.value;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDefinitionImpl(base: _Definition): DefinitionImpl {\n    return new DefinitionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _EnvironmentStatus, EnvironmentStatus, EnvironmentStatusImpl, newEnvironmentStatusImpl } from './environmentStatus';\nimport { _ApplicationConfig, ApplicationConfig, ApplicationConfigImpl, newApplicationConfigImpl } from './applicationConfig';\nimport { _ApplicationService, ApplicationService, ApplicationServiceImpl, newApplicationServiceImpl } from './applicationService';\n\n\n/**\n * Environment\\'s properties\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Environment { \n    /**\n     * Creation time\n     */\n    readonly created?: Date;\n    /**\n     * Environment name\n     */\n    name: string;\n    /**\n     * The Organisation which is responsibile for maintaining this Environment. Often this will be the same Organisation as the owning Application. However, sometimes it makes sense to delegate this responsibility to another Organisation. To do so, set this field to that Organisation\\'s identifier. Users with sufficient permissions in that organisation will be able to modify this Environment. If the maintenance_org_id is not provided, it will populated with that of the parent application\\'s organisation. \n     */\n    maintenance_org_id?: string;\n    /**\n     * A list of alternative domains for an instance. This can be used if you want to use a different FQDN for your application instead of the default `appname.org_subdomain`. Multiple different names can be useful if an application is multi-tenant, that is it can be accessed by multiple organisations and you don\\'t want your users to see it any different to existing web applications. A certificate will be generated for all valid domains. All aliases entered must have a cname assignment pointing to the FQDN of the cluster hosting your application. \n     */\n    domain_aliases?: Array<string>;\n    /**\n     * The version of the container to run. Required if the owning application is hosted. \n     */\n    version_tag?: string;\n    /**\n     * config_as_mount file path\n     */\n    config_mount_path?: string;\n    /**\n     * A json object of config applied as file mounted\n     */\n    config_as_mount?: string;\n    /**\n     * A json object of config applied as environment\n     */\n    config_as_env?: string;\n    /**\n     * secret_as_mount file path\n     */\n    secrets_mount_path?: string;\n    /**\n     * A json object of secrets applied as file mounted\n     */\n    secrets_as_mount?: string;\n    /**\n     * A json object of secrets applied as environment\n     */\n    secrets_as_env?: string;\n    /**\n     * The services used by the application for this environment. Note that in order to add a service to the environment, this environment must be added to the list of assignments for that service in the ApplicationService collection for the organisation. \n     */\n    readonly application_services?: Array<ApplicationService>;\n    /**\n     * serverless image path\n     */\n    serverless_image?: string;\n    status?: EnvironmentStatus;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n    application_configs?: ApplicationConfig;\n    /**\n     * A list of scopes to be requested on behalf of the user of the application and as well as configured based on the application launchers that launch this application/environment. This field is only populated on a GET request when the query parameter get_scopes=True is passed. \n     */\n    readonly scopes?: Array<string>;\n    /**\n     * A human readable slug to identify a resource and that is rfc1035 label compliant. The length has been restricted to 20 characters such that this name can be concatenated with other names or slugs. A slug is readOnly as it is generated by the backend resource. \n     */\n    name_slug?: string;\n    /**\n     * Environments are in transition to be deprecated. When an environment is migrated, an application is created specific for the environment. This property provides the id of the application that this environment has been migrated to. \n     */\n    migrated_app_id?: string;\n    /**\n     * If this application is a simple Web Application Firewall proxy, this field controls where the proxy runs. The possible values have the following meanings:  - `in_cloud`. An application which is `in_cloud` runs the proxy in the Agilicus cloud. This means that the application\\'s data will be decrypted in the Agilicus cloud so that the proxy may perform authentication, authorization, sanitisiation and modification tasks prior to forwarding the request to the destination service. - `on_site`: An application which is `on_site` runs the proxy as part of an AgentConnector located on a machine run by you. The application\\'s data is not decrypted until it reaches that machine. Any secrets required to do this (such as private keys for TLS Certificates) stay on that machine; they are never transmitted to Agilicus. The proxy running on site will decrypt the data, and perform authentication, authorisation and modification tasks prior to forwarding the request to the destination service. \n     */\n    proxy_location?: Environment.ProxyLocationEnum;\n}\n\nexport interface Environment extends _Environment {\n    _builtin_original?: _Environment;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class EnvironmentImpl  implements _Environment {\n    _builtin_original?: _Environment = undefined;\n    public readonly created: Date  | undefined ;\n    public name: string ;\n    public maintenance_org_id: string  | undefined ;\n    public domain_aliases: Array<string>  | undefined ;\n    public version_tag: string  | undefined ;\n    public config_mount_path: string  | undefined ;\n    public config_as_mount: string  | undefined ;\n    public config_as_env: string  | undefined ;\n    public secrets_mount_path: string  | undefined ;\n    public secrets_as_mount: string  | undefined ;\n    public secrets_as_env: string  | undefined ;\n    public readonly application_services: Array<ApplicationService>  | undefined ;\n    public serverless_image: string  | undefined ;\n    public status: EnvironmentStatus  | undefined ;\n    public readonly updated: Date  | undefined ;\n    public application_configs: ApplicationConfig  | undefined ;\n    public readonly scopes: Array<string>  | undefined ;\n    public name_slug: string  | undefined ;\n    public migrated_app_id: string  | undefined ;\n    public proxy_location: Environment.ProxyLocationEnum  | undefined ;\n    constructor(base: _Environment) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'created') >= 0) {\n            this.created = base.created;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'maintenance_org_id') >= 0) {\n            this.maintenance_org_id = base.maintenance_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'domain_aliases') >= 0) {\n            this.domain_aliases = base.domain_aliases;\n        }\n        if (Object.keys(base).findIndex(key => key === 'version_tag') >= 0) {\n            this.version_tag = base.version_tag;\n        }\n        if (Object.keys(base).findIndex(key => key === 'config_mount_path') >= 0) {\n            this.config_mount_path = base.config_mount_path;\n        }\n        if (Object.keys(base).findIndex(key => key === 'config_as_mount') >= 0) {\n            this.config_as_mount = base.config_as_mount;\n        }\n        if (Object.keys(base).findIndex(key => key === 'config_as_env') >= 0) {\n            this.config_as_env = base.config_as_env;\n        }\n        if (Object.keys(base).findIndex(key => key === 'secrets_mount_path') >= 0) {\n            this.secrets_mount_path = base.secrets_mount_path;\n        }\n        if (Object.keys(base).findIndex(key => key === 'secrets_as_mount') >= 0) {\n            this.secrets_as_mount = base.secrets_as_mount;\n        }\n        if (Object.keys(base).findIndex(key => key === 'secrets_as_env') >= 0) {\n            this.secrets_as_env = base.secrets_as_env;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_services') >= 0) {\n            if (base.application_services) {\n                this.application_services = base.application_services.map((original) => newApplicationServiceImpl(original));\n            } else {\n                this.application_services = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'serverless_image') >= 0) {\n            this.serverless_image = base.serverless_image;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_configs') >= 0) {\n            this.application_configs = base.application_configs;\n        }\n        if (Object.keys(base).findIndex(key => key === 'scopes') >= 0) {\n            this.scopes = base.scopes;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name_slug') >= 0) {\n            this.name_slug = base.name_slug;\n        }\n        if (Object.keys(base).findIndex(key => key === 'migrated_app_id') >= 0) {\n            this.migrated_app_id = base.migrated_app_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'proxy_location') >= 0) {\n            this.proxy_location = base.proxy_location;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.application_services !== undefined) {\n            for (const item of this.application_services) {\n                if (item !== undefined && (item as ApplicationServiceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationServiceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace Environment {\n    export type ProxyLocationEnum = 'in_cloud' | 'on_site';\n    export const ProxyLocationEnum = {\n        in_cloud: 'in_cloud' as ProxyLocationEnum,\n        on_site: 'on_site' as ProxyLocationEnum\n    };\n}\n\n\nexport function newEnvironmentImpl(base: _Environment): EnvironmentImpl {\n    return new EnvironmentImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Role, Role, RoleImpl, newRoleImpl } from './role';\nimport { _RolesConfig, RolesConfig, RolesConfigImpl, newRolesConfigImpl } from './rolesConfig';\nimport { _RulesConfig, RulesConfig, RulesConfigImpl, newRulesConfigImpl } from './rulesConfig';\nimport { _ApplicationStateSelector, ApplicationStateSelector, ApplicationStateSelectorImpl, newApplicationStateSelectorImpl } from './applicationStateSelector';\nimport { _DisplayInfo, DisplayInfo, DisplayInfoImpl, newDisplayInfoImpl } from './displayInfo';\nimport { _ApplicationAssignment, ApplicationAssignment, ApplicationAssignmentImpl, newApplicationAssignmentImpl } from './applicationAssignment';\nimport { _Definition, Definition, DefinitionImpl, newDefinitionImpl } from './definition';\nimport { _Environment, Environment, EnvironmentImpl, newEnvironmentImpl } from './environment';\nimport { _ApplicationMonitoringConfig, ApplicationMonitoringConfig, ApplicationMonitoringConfigImpl, newApplicationMonitoringConfigImpl } from './applicationMonitoringConfig';\nimport { _AlternateModeSetting, AlternateModeSetting, AlternateModeSettingImpl, newAlternateModeSettingImpl } from './alternateModeSetting';\nimport { _WorkloadConfiguration, WorkloadConfiguration, WorkloadConfigurationImpl, newWorkloadConfigurationImpl } from './workloadConfiguration';\n\n\n/**\n * Application\\'s properties\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Application { \n    /**\n     * Creation time\n     */\n    readonly created?: Date;\n    /**\n     * application service id\n     */\n    readonly id?: string;\n    /**\n     * For inheritance, defines the parent id.\n     */\n    readonly parent_id?: string;\n    /**\n     * application name\n     */\n    name: string;\n    /**\n     * Application description text\n     */\n    description?: string;\n    /**\n     * application category\n     */\n    category: string;\n    /**\n     * image registry path and name\n     */\n    image?: string;\n    /**\n     * registry username\n     */\n    image_username?: string;\n    /**\n     * registry password\n     */\n    image_password?: string;\n    /**\n     * type of credentials for image\n     */\n    image_credentials_type?: Application.ImageCredentialsTypeEnum;\n    /**\n     * List of environments\n     */\n    environments?: Array<Environment>;\n    /**\n     * organisation id\n     */\n    org_id: string;\n    /**\n     * Administrator contact email\n     */\n    contact_email?: string;\n    monitoring_config?: ApplicationMonitoringConfig;\n    /**\n     * The transport layer port the application listens on for requests. E.g. if the application listens for HTTP requests on the standard port, port 80, set this to 80. \n     */\n    port?: number;\n    /**\n     * health check URI\n     */\n    healthcheck_uri?: string;\n    /**\n     * List of Roles\n     */\n    roles?: Array<Role>;\n    roles_config?: RolesConfig;\n    rules_config?: RulesConfig;\n    /**\n     * List of definitions\n     */\n    definitions?: Array<Definition>;\n    /**\n     * Controls the Organisations which have access to Environments of this Application. \n     */\n    assignments?: Array<ApplicationAssignment>;\n    /**\n     * Whether this Application is owned by the provided organisation. \n     */\n    owned?: boolean;\n    /**\n     * Whether this Application has an Environment maintained by the provided organisation. \n     */\n    maintained?: boolean;\n    /**\n     * Whether an Environment is assigned to this Application. \n     */\n    assigned?: boolean;\n    /**\n     * Whether or not this Application is published, and if so, how. An application that has been published somewhere will have high level details about it visible (through apis intended to expose published applications), such as its name and description. The enum values mean the following:  - no: This application is not published. It will only be visibile to users with       permission to access the application, or to administrators.  - public: This application is published to the public catalogue. Any user who       can request access to the organisation will see high level details about this       application. \n     */\n    published?: Application.PublishedEnum;\n    /**\n     * The id of the default role to use for this application. This role will be assigned to users granted access to this application by default, unless overridden. This value must point to a valid Role for this application. A string of length 0 will clear out the default role.\n     */\n    default_role_id?: string | null;\n    /**\n     * The name of the default role. Does not change which role is used. Provided for convenience. \n     */\n    readonly default_role_name?: string | null;\n    /**\n     * A url pointing to an icon representing this application. \n     */\n    icon_url?: string;\n    display_info?: DisplayInfo;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n    /**\n     * Where the application runs. Applications can run within an Agilicus hosting platform, or elsewhere on the internet. The possible values have the following meanings:   - `hosted`: the application runs on the Agilicus hosting platform.   - `external`: the application runs elsewhere on the internet. External applications     will not create instances in the Agilicus hosting platform. However, they will     be able to use Agilicus for Identity and Authentication. \n     */\n    location?: Application.LocationEnum;\n    /**\n     * Service account user GUID used to deploy the application\n     */\n    readonly service_account_id?: string;\n    /**\n     * If service_account_enabled field is set to true, a service account will be created. If service_account_enabled field is set to false, the service account will be deleted. If the service_account_enabled field is not set no action on the service account is taken. \n     */\n    service_account_required?: boolean;\n    /**\n     * The type of application meanings:   - `user_defined`: A user defined application.   - `internal`: An internal application used by agilicus services. \n     */\n    application_type?: Application.ApplicationTypeEnum;\n    /**\n     * A human readable slug to identify a resource and that is rfc1035 label compliant. The length has been restricted to 20 characters such that this name can be concatenated with other names or slugs. A slug is readOnly as it is generated by the backend resource. \n     */\n    name_slug?: string;\n    workload_config?: WorkloadConfiguration;\n    admin_state?: ApplicationStateSelector;\n    alternate_mode_setting?: AlternateModeSetting;\n    /**\n     * A list of launchers that can be used to launch this application. \n     */\n    launchers?: Array<string>;\n    /**\n     * If an application inherits from a parent application (when parent_id exists), this property provides the name of the parent. \n     */\n    readonly parent_name?: string;\n}\n\nexport interface Application extends _Application {\n    _builtin_original?: _Application;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationImpl  implements _Application {\n    _builtin_original?: _Application = undefined;\n    public readonly created: Date  | undefined ;\n    public readonly id: string  | undefined ;\n    public readonly parent_id: string  | undefined ;\n    public name: string ;\n    public description: string  | undefined ;\n    public category: string ;\n    public image: string  | undefined ;\n    public image_username: string  | undefined ;\n    public image_password: string  | undefined ;\n    public image_credentials_type: Application.ImageCredentialsTypeEnum  | undefined ;\n    public environments: Array<Environment>  | undefined ;\n    public org_id: string ;\n    public contact_email: string  | undefined ;\n    public monitoring_config: ApplicationMonitoringConfig  | undefined ;\n    public port: number  | undefined ;\n    public healthcheck_uri: string  | undefined ;\n    public roles: Array<Role>  | undefined ;\n    public roles_config: RolesConfig  | undefined ;\n    public rules_config: RulesConfig  | undefined ;\n    public definitions: Array<Definition>  | undefined ;\n    public assignments: Array<ApplicationAssignment>  | undefined ;\n    public owned: boolean  | undefined ;\n    public maintained: boolean  | undefined ;\n    public assigned: boolean  | undefined ;\n    public published: Application.PublishedEnum  | undefined ;\n    public default_role_id: string | null  | undefined ;\n    public readonly default_role_name: string | null  | undefined ;\n    public icon_url: string  | undefined ;\n    public display_info: DisplayInfo  | undefined ;\n    public readonly updated: Date  | undefined ;\n    public location: Application.LocationEnum  | undefined ;\n    public readonly service_account_id: string  | undefined ;\n    public service_account_required: boolean  | undefined ;\n    public application_type: Application.ApplicationTypeEnum  | undefined ;\n    public name_slug: string  | undefined ;\n    public workload_config: WorkloadConfiguration  | undefined ;\n    public admin_state: ApplicationStateSelector  | undefined ;\n    public alternate_mode_setting: AlternateModeSetting  | undefined ;\n    public launchers: Array<string>  | undefined ;\n    public readonly parent_name: string  | undefined ;\n    constructor(base: _Application) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'created') >= 0) {\n            this.created = base.created;\n        }\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'parent_id') >= 0) {\n            this.parent_id = base.parent_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'category') >= 0) {\n            this.category = base.category;\n        }\n        if (Object.keys(base).findIndex(key => key === 'image') >= 0) {\n            this.image = base.image;\n        }\n        if (Object.keys(base).findIndex(key => key === 'image_username') >= 0) {\n            this.image_username = base.image_username;\n        }\n        if (Object.keys(base).findIndex(key => key === 'image_password') >= 0) {\n            this.image_password = base.image_password;\n        }\n        if (Object.keys(base).findIndex(key => key === 'image_credentials_type') >= 0) {\n            this.image_credentials_type = base.image_credentials_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'environments') >= 0) {\n            if (base.environments) {\n                this.environments = base.environments.map((original) => newEnvironmentImpl(original));\n            } else {\n                this.environments = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'contact_email') >= 0) {\n            this.contact_email = base.contact_email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'monitoring_config') >= 0) {\n            this.monitoring_config = base.monitoring_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'port') >= 0) {\n            this.port = base.port;\n        }\n        if (Object.keys(base).findIndex(key => key === 'healthcheck_uri') >= 0) {\n            this.healthcheck_uri = base.healthcheck_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'roles') >= 0) {\n            if (base.roles) {\n                this.roles = base.roles.map((original) => newRoleImpl(original));\n            } else {\n                this.roles = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'roles_config') >= 0) {\n            this.roles_config = base.roles_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'rules_config') >= 0) {\n            this.rules_config = base.rules_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'definitions') >= 0) {\n            if (base.definitions) {\n                this.definitions = base.definitions.map((original) => newDefinitionImpl(original));\n            } else {\n                this.definitions = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'assignments') >= 0) {\n            if (base.assignments) {\n                this.assignments = base.assignments.map((original) => newApplicationAssignmentImpl(original));\n            } else {\n                this.assignments = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'owned') >= 0) {\n            this.owned = base.owned;\n        }\n        if (Object.keys(base).findIndex(key => key === 'maintained') >= 0) {\n            this.maintained = base.maintained;\n        }\n        if (Object.keys(base).findIndex(key => key === 'assigned') >= 0) {\n            this.assigned = base.assigned;\n        }\n        if (Object.keys(base).findIndex(key => key === 'published') >= 0) {\n            this.published = base.published;\n        }\n        if (Object.keys(base).findIndex(key => key === 'default_role_id') >= 0) {\n            this.default_role_id = base.default_role_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'default_role_name') >= 0) {\n            this.default_role_name = base.default_role_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'icon_url') >= 0) {\n            this.icon_url = base.icon_url;\n        }\n        if (Object.keys(base).findIndex(key => key === 'display_info') >= 0) {\n            this.display_info = base.display_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n        if (Object.keys(base).findIndex(key => key === 'location') >= 0) {\n            this.location = base.location;\n        }\n        if (Object.keys(base).findIndex(key => key === 'service_account_id') >= 0) {\n            this.service_account_id = base.service_account_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'service_account_required') >= 0) {\n            this.service_account_required = base.service_account_required;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_type') >= 0) {\n            this.application_type = base.application_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name_slug') >= 0) {\n            this.name_slug = base.name_slug;\n        }\n        if (Object.keys(base).findIndex(key => key === 'workload_config') >= 0) {\n            this.workload_config = base.workload_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'admin_state') >= 0) {\n            this.admin_state = base.admin_state;\n        }\n        if (Object.keys(base).findIndex(key => key === 'alternate_mode_setting') >= 0) {\n            this.alternate_mode_setting = base.alternate_mode_setting;\n        }\n        if (Object.keys(base).findIndex(key => key === 'launchers') >= 0) {\n            this.launchers = base.launchers;\n        }\n        if (Object.keys(base).findIndex(key => key === 'parent_name') >= 0) {\n            this.parent_name = base.parent_name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.environments !== undefined) {\n            for (const item of this.environments) {\n                if (item !== undefined && (item as EnvironmentImpl)._remove_builtin_extensions !== undefined) {\n                    (item as EnvironmentImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.roles !== undefined) {\n            for (const item of this.roles) {\n                if (item !== undefined && (item as RoleImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RoleImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.definitions !== undefined) {\n            for (const item of this.definitions) {\n                if (item !== undefined && (item as DefinitionImpl)._remove_builtin_extensions !== undefined) {\n                    (item as DefinitionImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.assignments !== undefined) {\n            for (const item of this.assignments) {\n                if (item !== undefined && (item as ApplicationAssignmentImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationAssignmentImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace Application {\n    export type ImageCredentialsTypeEnum = 'basic_auth' | 'token';\n    export const ImageCredentialsTypeEnum = {\n        basic_auth: 'basic_auth' as ImageCredentialsTypeEnum,\n        token: 'token' as ImageCredentialsTypeEnum\n    };\n    export type PublishedEnum = 'no' | 'public';\n    export const PublishedEnum = {\n        no: 'no' as PublishedEnum,\n        public: 'public' as PublishedEnum\n    };\n    export type LocationEnum = 'hosted' | 'external';\n    export const LocationEnum = {\n        hosted: 'hosted' as LocationEnum,\n        external: 'external' as LocationEnum\n    };\n    export type ApplicationTypeEnum = 'user_defined' | 'internal';\n    export const ApplicationTypeEnum = {\n        user_defined: 'user_defined' as ApplicationTypeEnum,\n        internal: 'internal' as ApplicationTypeEnum\n    };\n}\n\n\nexport function newApplicationImpl(base: _Application): ApplicationImpl {\n    return new ApplicationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configuration of additional information passed to the application by the Agilicus System \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationAdditionalContext { \n    /**\n     * if set to `true` additional context headers will be forward to the application along with the request. An example of a context header is the user\\'s ID in the Agilicus System \n     */\n    include_user_context_headers: boolean;\n}\n\nexport interface ApplicationAdditionalContext extends _ApplicationAdditionalContext {\n    _builtin_original?: _ApplicationAdditionalContext;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationAdditionalContextImpl  implements _ApplicationAdditionalContext {\n    _builtin_original?: _ApplicationAdditionalContext = undefined;\n    public include_user_context_headers: boolean ;\n    constructor(base: _ApplicationAdditionalContext) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'include_user_context_headers') >= 0) {\n            this.include_user_context_headers = base.include_user_context_headers;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newApplicationAdditionalContextImpl(base: _ApplicationAdditionalContext): ApplicationAdditionalContextImpl {\n    return new ApplicationAdditionalContextImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _OIDCProxyUpstreamAuthentication, OIDCProxyUpstreamAuthentication, OIDCProxyUpstreamAuthenticationImpl, newOIDCProxyUpstreamAuthenticationImpl } from './oIDCProxyUpstreamAuthentication';\n\n\n/**\n * The configuration for application authentication options. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationAuthenticationConfig { \n    /**\n     * Whether the application should be forwarded requests when a user is unauthenticated so that the application can trigger authentication. If true, unauthenticated user requests will be forwarded to the application with a header indicating the user is unauthenticated. If false unauthenticated users will be denied and no traffic will reach the application. \n     */\n    application_handles_authentication?: boolean;\n    /**\n     * A string which may be used to cipher session data -- e.g. a session cookie. This value will be passed to a running application in the `SESSION_SECRET` environment variable. If that variable is present in the instance\\'s configured environment, the environment\\'s configuration will take precedence. This value is automatically generated when an instance is created if not provided. It may be changed later. If the value is `\\\"\\\"` then the environment variable will not be provisioned. The automatically generated value is a base64-encoded series of random bytes. Aside from the base64 encoding, the value has no meaning. \n     */\n    session_secret?: string;\n    upstream?: OIDCProxyUpstreamAuthentication;\n}\n\nexport interface ApplicationAuthenticationConfig extends _ApplicationAuthenticationConfig {\n    _builtin_original?: _ApplicationAuthenticationConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationAuthenticationConfigImpl  implements _ApplicationAuthenticationConfig {\n    _builtin_original?: _ApplicationAuthenticationConfig = undefined;\n    public application_handles_authentication: boolean  | undefined ;\n    public session_secret: string  | undefined ;\n    public upstream: OIDCProxyUpstreamAuthentication  | undefined ;\n    constructor(base: _ApplicationAuthenticationConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'application_handles_authentication') >= 0) {\n            this.application_handles_authentication = base.application_handles_authentication;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session_secret') >= 0) {\n            this.session_secret = base.session_secret;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream') >= 0) {\n            this.upstream = base.upstream;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newApplicationAuthenticationConfigImpl(base: _ApplicationAuthenticationConfig): ApplicationAuthenticationConfigImpl {\n    return new ApplicationAuthenticationConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ApplicationSecurity, ApplicationSecurity, ApplicationSecurityImpl, newApplicationSecurityImpl } from './applicationSecurity';\nimport { _ApplicationDynamicConfig, ApplicationDynamicConfig, ApplicationDynamicConfigImpl, newApplicationDynamicConfigImpl } from './applicationDynamicConfig';\nimport { _ApplicationAuthenticationConfig, ApplicationAuthenticationConfig, ApplicationAuthenticationConfigImpl, newApplicationAuthenticationConfigImpl } from './applicationAuthenticationConfig';\nimport { _ClientInjection, ClientInjection, ClientInjectionImpl, newClientInjectionImpl } from './clientInjection';\nimport { _OIDCProxyConfig, OIDCProxyConfig, OIDCProxyConfigImpl, newOIDCProxyConfigImpl } from './oIDCProxyConfig';\nimport { _ApplicationAdditionalContext, ApplicationAdditionalContext, ApplicationAdditionalContextImpl, newApplicationAdditionalContextImpl } from './applicationAdditionalContext';\n\n\n/**\n * The generic list of configurations that will be passed to environment.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationConfig { \n    authentication_config?: ApplicationAuthenticationConfig;\n    oidc_config?: OIDCProxyConfig;\n    security?: ApplicationSecurity;\n    additional_context?: ApplicationAdditionalContext;\n    dynamic_config?: ApplicationDynamicConfig;\n    client_injection?: ClientInjection;\n}\n\nexport interface ApplicationConfig extends _ApplicationConfig {\n    _builtin_original?: _ApplicationConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationConfigImpl  implements _ApplicationConfig {\n    _builtin_original?: _ApplicationConfig = undefined;\n    public authentication_config: ApplicationAuthenticationConfig  | undefined ;\n    public oidc_config: OIDCProxyConfig  | undefined ;\n    public security: ApplicationSecurity  | undefined ;\n    public additional_context: ApplicationAdditionalContext  | undefined ;\n    public dynamic_config: ApplicationDynamicConfig  | undefined ;\n    public client_injection: ClientInjection  | undefined ;\n    constructor(base: _ApplicationConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'authentication_config') >= 0) {\n            this.authentication_config = base.authentication_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'oidc_config') >= 0) {\n            this.oidc_config = base.oidc_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'security') >= 0) {\n            this.security = base.security;\n        }\n        if (Object.keys(base).findIndex(key => key === 'additional_context') >= 0) {\n            this.additional_context = base.additional_context;\n        }\n        if (Object.keys(base).findIndex(key => key === 'dynamic_config') >= 0) {\n            this.dynamic_config = base.dynamic_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'client_injection') >= 0) {\n            this.client_injection = base.client_injection;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newApplicationConfigImpl(base: _ApplicationConfig): ApplicationConfigImpl {\n    return new ApplicationConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ServiceProtocolConfig, ServiceProtocolConfig, ServiceProtocolConfigImpl, newServiceProtocolConfigImpl } from './serviceProtocolConfig';\nimport { _ApplicationServiceLoadBalancing, ApplicationServiceLoadBalancing, ApplicationServiceLoadBalancingImpl, newApplicationServiceLoadBalancingImpl } from './applicationServiceLoadBalancing';\n\n\n/**\n * An application service route defines how a service, which is associated to an application, is routed internally. This would be based upon how the service is assigned (the ApplicationServiceAssignment), and its expose_type.  For a service route, it is expected that an external name and/or path_prefix would route to an internal_name.  Hosted applications, where assets are served locally by the application itself (rather than to an upstream service), may also have a service route(s). If there are domain aliases configured for the Application, there would be a unique ApplicationServiceRoute for each domain alias for that application, however no service_id will be present since one does not exist.  Examples:     external_name -> internal_name     external_name/path_prefix -> internal_name     application_external_name/path_prefix -> internal_name \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationServiceRoute { \n    /**\n     * Unique identifier\n     */\n    readonly service_id?: string;\n    protocol_config?: ServiceProtocolConfig;\n    /**\n     * The URL path prefix should service routing be achieved by using a path prefix. \n     */\n    path_prefix?: string;\n    /**\n     * A service can be exposed via the following ways: \\'application\\':     A service assigned to an application will be exposed externally as that application. This     sets up an ingress route that forwards from the applications FQDN to this service. This property     can only be true for one service bound to an application and environment. If the environment     has domain_aliases, those alises would also expose this service. \\'path_prefix\\':     This setting exposes the service as a path prefix to the applications hostname.  The generated     prefix would be constructed as: {service_name}_{port} \\'hostname\\':     exposes the service as a specific hostname(s), as provisioned by the expose_as_hostnames property \\'not_exposed\\':     The service is not externally exposed. \n     */\n    expose_type: string;\n    /**\n     * The internal name of the service. \n     */\n    internal_name?: string;\n    /**\n     * The external name of the service. If the field is nullable or an empty string, then the external name of the service is implied to be the external name of the application. \n     */\n    external_name?: string;\n    load_balancing?: ApplicationServiceLoadBalancing;\n}\n\nexport interface ApplicationServiceRoute extends _ApplicationServiceRoute {\n    _builtin_original?: _ApplicationServiceRoute;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationServiceRouteImpl  implements _ApplicationServiceRoute {\n    _builtin_original?: _ApplicationServiceRoute = undefined;\n    public readonly service_id: string  | undefined ;\n    public protocol_config: ServiceProtocolConfig  | undefined ;\n    public path_prefix: string  | undefined ;\n    public expose_type: string ;\n    public internal_name: string  | undefined ;\n    public external_name: string  | undefined ;\n    public load_balancing: ApplicationServiceLoadBalancing  | undefined ;\n    constructor(base: _ApplicationServiceRoute) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'service_id') >= 0) {\n            this.service_id = base.service_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'protocol_config') >= 0) {\n            this.protocol_config = base.protocol_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'path_prefix') >= 0) {\n            this.path_prefix = base.path_prefix;\n        }\n        if (Object.keys(base).findIndex(key => key === 'expose_type') >= 0) {\n            this.expose_type = base.expose_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'internal_name') >= 0) {\n            this.internal_name = base.internal_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'external_name') >= 0) {\n            this.external_name = base.external_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'load_balancing') >= 0) {\n            this.load_balancing = base.load_balancing;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newApplicationServiceRouteImpl(base: _ApplicationServiceRoute): ApplicationServiceRouteImpl {\n    return new ApplicationServiceRouteImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ApplicationServiceRoute, ApplicationServiceRoute, ApplicationServiceRouteImpl, newApplicationServiceRouteImpl } from './applicationServiceRoute';\n\n\n/**\n * Application dynamic configuration that is generated by the backend API service. This applies business rule configuration based on how the application is configured by the user and its services. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationDynamicConfig { \n    /**\n     * A list of service routes used to map services from an internal name to an external name, as defined by the expose_type of the ApplicationServiceAssignment.  This is provided as a separate list, dynamic generated, provided to the application, since the routing rules may be required for the main webapp. \n     */\n    service_routes?: Array<ApplicationServiceRoute>;\n}\n\nexport interface ApplicationDynamicConfig extends _ApplicationDynamicConfig {\n    _builtin_original?: _ApplicationDynamicConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationDynamicConfigImpl  implements _ApplicationDynamicConfig {\n    _builtin_original?: _ApplicationDynamicConfig = undefined;\n    public service_routes: Array<ApplicationServiceRoute>  | undefined ;\n    constructor(base: _ApplicationDynamicConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'service_routes') >= 0) {\n            if (base.service_routes) {\n                this.service_routes = base.service_routes.map((original) => newApplicationServiceRouteImpl(original));\n            } else {\n                this.service_routes = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.service_routes !== undefined) {\n            for (const item of this.service_routes) {\n                if (item !== undefined && (item as ApplicationServiceRouteImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationServiceRouteImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newApplicationDynamicConfigImpl(base: _ApplicationDynamicConfig): ApplicationDynamicConfigImpl {\n    return new ApplicationDynamicConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The prometheus monitoring config\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationMonitoringConfig { \n    /**\n     * The port to access for metrics. If unset uses the application\\'s port.\n     */\n    port?: number | null;\n    /**\n     * The path to scrape prometheus metrics from\n     */\n    path?: string;\n}\n\nexport interface ApplicationMonitoringConfig extends _ApplicationMonitoringConfig {\n    _builtin_original?: _ApplicationMonitoringConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationMonitoringConfigImpl  implements _ApplicationMonitoringConfig {\n    _builtin_original?: _ApplicationMonitoringConfig = undefined;\n    public port: number | null  | undefined ;\n    public path: string  | undefined ;\n    constructor(base: _ApplicationMonitoringConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'port') >= 0) {\n            this.port = base.port;\n        }\n        if (Object.keys(base).findIndex(key => key === 'path') >= 0) {\n            this.path = base.path;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newApplicationMonitoringConfigImpl(base: _ApplicationMonitoringConfig): ApplicationMonitoringConfigImpl {\n    return new ApplicationMonitoringConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _HTTPSecuritySettings, HTTPSecuritySettings, HTTPSecuritySettingsImpl, newHTTPSecuritySettingsImpl } from './hTTPSecuritySettings';\n\n\n/**\n * Configuration of an Application\\'s security model. This includes details such as http security headers and certificate transparency settings. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationSecurity { \n    http?: HTTPSecuritySettings;\n}\n\nexport interface ApplicationSecurity extends _ApplicationSecurity {\n    _builtin_original?: _ApplicationSecurity;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationSecurityImpl  implements _ApplicationSecurity {\n    _builtin_original?: _ApplicationSecurity = undefined;\n    public http: HTTPSecuritySettings  | undefined ;\n    constructor(base: _ApplicationSecurity) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'http') >= 0) {\n            this.http = base.http;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newApplicationSecurityImpl(base: _ApplicationSecurity): ApplicationSecurityImpl {\n    return new ApplicationSecurityImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ShareDetailedStats, ShareDetailedStats, ShareDetailedStatsImpl, newShareDetailedStatsImpl } from './shareDetailedStats';\nimport { _ShareSummaryStats, ShareSummaryStats, ShareSummaryStatsImpl, newShareSummaryStatsImpl } from './shareSummaryStats';\nimport { _NetworkDetailedStats, NetworkDetailedStats, NetworkDetailedStatsImpl, newNetworkDetailedStatsImpl } from './networkDetailedStats';\nimport { _HTTPDetailedStats, HTTPDetailedStats, HTTPDetailedStatsImpl, newHTTPDetailedStatsImpl } from './hTTPDetailedStats';\nimport { _NetworkSummaryStats, NetworkSummaryStats, NetworkSummaryStatsImpl, newNetworkSummaryStatsImpl } from './networkSummaryStats';\nimport { _HTTPSummaryStats, HTTPSummaryStats, HTTPSummaryStatsImpl, newHTTPSummaryStatsImpl } from './hTTPSummaryStats';\n\n\n/**\n * The common statistics for an application service. Depending on how the connector routes to the application service, and the level of stats being published, it mave have any combination of network, http, share, summary or detailed. For example, a network only reached by wscat forwarding will not have `http_*_stats`. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationServiceCommonStats { \n    network_summary_stats?: NetworkSummaryStats;\n    http_summary_stats?: HTTPSummaryStats;\n    network_detailed_stats?: NetworkDetailedStats;\n    http_detailed_stats?: HTTPDetailedStats;\n    share_summary_stats?: ShareSummaryStats;\n    share_detailed_stats?: ShareDetailedStats;\n}\n\nexport interface ApplicationServiceCommonStats extends _ApplicationServiceCommonStats {\n    _builtin_original?: _ApplicationServiceCommonStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationServiceCommonStatsImpl  implements _ApplicationServiceCommonStats {\n    _builtin_original?: _ApplicationServiceCommonStats = undefined;\n    public network_summary_stats: NetworkSummaryStats  | undefined ;\n    public http_summary_stats: HTTPSummaryStats  | undefined ;\n    public network_detailed_stats: NetworkDetailedStats  | undefined ;\n    public http_detailed_stats: HTTPDetailedStats  | undefined ;\n    public share_summary_stats: ShareSummaryStats  | undefined ;\n    public share_detailed_stats: ShareDetailedStats  | undefined ;\n    constructor(base: _ApplicationServiceCommonStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'network_summary_stats') >= 0) {\n            this.network_summary_stats = base.network_summary_stats;\n        }\n        if (Object.keys(base).findIndex(key => key === 'http_summary_stats') >= 0) {\n            this.http_summary_stats = base.http_summary_stats;\n        }\n        if (Object.keys(base).findIndex(key => key === 'network_detailed_stats') >= 0) {\n            this.network_detailed_stats = base.network_detailed_stats;\n        }\n        if (Object.keys(base).findIndex(key => key === 'http_detailed_stats') >= 0) {\n            this.http_detailed_stats = base.http_detailed_stats;\n        }\n        if (Object.keys(base).findIndex(key => key === 'share_summary_stats') >= 0) {\n            this.share_summary_stats = base.share_summary_stats;\n        }\n        if (Object.keys(base).findIndex(key => key === 'share_detailed_stats') >= 0) {\n            this.share_detailed_stats = base.share_detailed_stats;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newApplicationServiceCommonStatsImpl(base: _ApplicationServiceCommonStats): ApplicationServiceCommonStatsImpl {\n    return new ApplicationServiceCommonStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configure how the system load balances to an application service. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationServiceLoadBalancing { \n    /**\n     * How to map downstream connections to this request to upstream connections.   - `one-to-one`: Each downstream connection corresponds to exactly one upstream connection.     This can be quite useful when using http in conjuction with NTLM or Negotiate     authentication. However, it does place more load on the connector: it must maintain     a single connection for every upstream connection, meaning that it cannot rely on connection     pooling to optimize communication with the upstream.  - `default`: fall back on the default connection pooling behaviour. This may be overriden by other     configuration. For example, NTLM passthrough requires one-to-one connectivity. If the connection mapping     is configured as \\\"default\\\", then the connector will choose to use one-to-one connectivity. \n     */\n    connection_mapping: string;\n}\n\nexport interface ApplicationServiceLoadBalancing extends _ApplicationServiceLoadBalancing {\n    _builtin_original?: _ApplicationServiceLoadBalancing;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationServiceLoadBalancingImpl  implements _ApplicationServiceLoadBalancing {\n    _builtin_original?: _ApplicationServiceLoadBalancing = undefined;\n    public connection_mapping: string ;\n    constructor(base: _ApplicationServiceLoadBalancing) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'connection_mapping') >= 0) {\n            this.connection_mapping = base.connection_mapping;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newApplicationServiceLoadBalancingImpl(base: _ApplicationServiceLoadBalancing): ApplicationServiceLoadBalancingImpl {\n    return new ApplicationServiceLoadBalancingImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Describes how to connect to the application service. An application service may be reachable from multiple locations. Whether or not those locations are avaiable depends on location of the client attempting communication with them. The client should probe to determine the best candidate, likely through proximity, or an approximation such as a happy eyeballs strategy. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationServiceLocation { \n    /**\n     * The hostname to contact the service on. This will be used for the TLS SNI field. If no IP address is specified, then it will also be used for a DNS lookup. \n     */\n    hostname: string;\n    /**\n     * The port to connect to. If empty, will default to port 443.\n     */\n    port?: number;\n    /**\n     * The IP address to connect to. If this is set, then clients can choose to connect directly to it rather than using DNS to discover the address of the location. \n     */\n    ip_address?: string;\n    /**\n     * Whether this location is \\'public\\' (from a trust perspective). This helps clients choose which set of certificates to use for server authentication. \n     */\n    _public?: boolean;\n}\n\nexport interface ApplicationServiceLocation extends _ApplicationServiceLocation {\n    _builtin_original?: _ApplicationServiceLocation;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationServiceLocationImpl  implements _ApplicationServiceLocation {\n    _builtin_original?: _ApplicationServiceLocation = undefined;\n    public hostname: string ;\n    public port: number  | undefined ;\n    public ip_address: string  | undefined ;\n    public _public: boolean  | undefined ;\n    constructor(base: _ApplicationServiceLocation) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'hostname') >= 0) {\n            this.hostname = base.hostname;\n        }\n        if (Object.keys(base).findIndex(key => key === 'port') >= 0) {\n            this.port = base.port;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ip_address') >= 0) {\n            this.ip_address = base.ip_address;\n        }\n        if (Object.keys(base).findIndex(key => key === '_public') >= 0) {\n            this._public = base._public;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newApplicationServiceLocationImpl(base: _ApplicationServiceLocation): ApplicationServiceLocationImpl {\n    return new ApplicationServiceLocationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Describes a route by which a resource can be accessed \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConnectorRoute { \n    /**\n     * Unique identifier\n     */\n    resource_id: string;\n    /**\n     * The path uniquely identifying the route to the mentioned resource using the routing given routing_method. This path must be joined with a host and scheme associated to a connector router to actually establish a tunnel. \n     */\n    routing_path: string;\n    /**\n     * How to determine the route given the routing_path. The possible values mean:   - `resource_hostname`: route based on the hostname configured for the resource.      example: /named-service/org-1/host/localhost/port/5000   - `resource_id`: route based on the id of the resource.      example: /named-service/org-1/guid/aB8Zm5tuxVia2FQ7i/port/5000 Note that it may indicate a port range, (e.g. /named-service/<org>/host/localhost/port/{{port}}?port:int=5000-5002,5555,5556). In that case when establishing an actual connection, substitute {{port}} with the port you want to connect to, and drop the query string. \n     */\n    routing_method: string;\n}\n\nexport interface ConnectorRoute extends _ConnectorRoute {\n    _builtin_original?: _ConnectorRoute;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorRouteImpl  implements _ConnectorRoute {\n    _builtin_original?: _ConnectorRoute = undefined;\n    public resource_id: string ;\n    public routing_path: string ;\n    public routing_method: string ;\n    constructor(base: _ConnectorRoute) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'resource_id') >= 0) {\n            this.resource_id = base.resource_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'routing_path') >= 0) {\n            this.routing_path = base.routing_path;\n        }\n        if (Object.keys(base).findIndex(key => key === 'routing_method') >= 0) {\n            this.routing_method = base.routing_method;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newConnectorRouteImpl(base: _ConnectorRoute): ConnectorRouteImpl {\n    return new ConnectorRouteImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ApplicationServiceLocation, ApplicationServiceLocation, ApplicationServiceLocationImpl, newApplicationServiceLocationImpl } from './applicationServiceLocation';\nimport { _ConnectorRoute, ConnectorRoute, ConnectorRouteImpl, newConnectorRouteImpl } from './connectorRoute';\n\n\n/**\n * Describes how to route to an application service. An application service may be reachable through public endpoints or local ones. This object describes those endpoints. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationServiceRoutingInfo { \n    /**\n     * The exposed network service hostname. See ServiceExposeConfig. \n     */\n    exposed_as_hostname?: string;\n    /**\n     * The locations by which an end-user may reach the application service. \n     */\n    locations: Array<ApplicationServiceLocation>;\n    /**\n     * The path at which to access this application service by hostname. Note that it may indicate a port range, (e.g. /named-service/<org>/host/localhost/port/{{port}}?port:int=5000-5002,5555,5556). In that case when establishing an actual connection, substitute {{port}} with the port you want to connect to, and drop the query string. \n     */\n    hostname_path?: string;\n    /**\n     * The routes by which to reach this ApplicationService. These routes can be joined with the locations to build the full tunnel URI. \n     */\n    routes?: Array<ConnectorRoute>;\n}\n\nexport interface ApplicationServiceRoutingInfo extends _ApplicationServiceRoutingInfo {\n    _builtin_original?: _ApplicationServiceRoutingInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationServiceRoutingInfoImpl  implements _ApplicationServiceRoutingInfo {\n    _builtin_original?: _ApplicationServiceRoutingInfo = undefined;\n    public exposed_as_hostname: string  | undefined ;\n    public locations: Array<ApplicationServiceLocation> ;\n    public hostname_path: string  | undefined ;\n    public routes: Array<ConnectorRoute>  | undefined ;\n    constructor(base: _ApplicationServiceRoutingInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'exposed_as_hostname') >= 0) {\n            this.exposed_as_hostname = base.exposed_as_hostname;\n        }\n        if (Object.keys(base).findIndex(key => key === 'locations') >= 0) {\n            if (base.locations) {\n                this.locations = base.locations.map((original) => newApplicationServiceLocationImpl(original));\n            } else {\n                this.locations = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'hostname_path') >= 0) {\n            this.hostname_path = base.hostname_path;\n        }\n        if (Object.keys(base).findIndex(key => key === 'routes') >= 0) {\n            if (base.routes) {\n                this.routes = base.routes.map((original) => newConnectorRouteImpl(original));\n            } else {\n                this.routes = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.locations !== undefined) {\n            for (const item of this.locations) {\n                if (item !== undefined && (item as ApplicationServiceLocationImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationServiceLocationImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.routes !== undefined) {\n            for (const item of this.routes) {\n                if (item !== undefined && (item as ConnectorRouteImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ConnectorRouteImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newApplicationServiceRoutingInfoImpl(base: _ApplicationServiceRoutingInfo): ApplicationServiceRoutingInfoImpl {\n    return new ApplicationServiceRoutingInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ApplicationServiceCommonStats, ApplicationServiceCommonStats, ApplicationServiceCommonStatsImpl, newApplicationServiceCommonStatsImpl } from './applicationServiceCommonStats';\n\n\n/**\n * Stats published for a specific application service \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationServiceStatsPublish { \n    /**\n     * Unique identifier\n     */\n    application_service_id: string;\n    upstream_stats: ApplicationServiceCommonStats;\n}\n\nexport interface ApplicationServiceStatsPublish extends _ApplicationServiceStatsPublish {\n    _builtin_original?: _ApplicationServiceStatsPublish;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationServiceStatsPublishImpl  implements _ApplicationServiceStatsPublish {\n    _builtin_original?: _ApplicationServiceStatsPublish = undefined;\n    public application_service_id: string ;\n    public upstream_stats: ApplicationServiceCommonStats ;\n    constructor(base: _ApplicationServiceStatsPublish) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'application_service_id') >= 0) {\n            this.application_service_id = base.application_service_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_stats') >= 0) {\n            this.upstream_stats = base.upstream_stats;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newApplicationServiceStatsPublishImpl(base: _ApplicationServiceStatsPublish): ApplicationServiceStatsPublishImpl {\n    return new ApplicationServiceStatsPublishImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ApplicationServiceRoutingInfo, ApplicationServiceRoutingInfo, ApplicationServiceRoutingInfoImpl, newApplicationServiceRoutingInfoImpl } from './applicationServiceRoutingInfo';\nimport { _AlternateModeStatus, AlternateModeStatus, AlternateModeStatusImpl, newAlternateModeStatusImpl } from './alternateModeStatus';\n\n\n/**\n * The status of the application service object. This includes information related to how to reach the application service. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationServiceStatus { \n    routing_info: ApplicationServiceRoutingInfo;\n    alternate_mode_status?: AlternateModeStatus;\n}\n\nexport interface ApplicationServiceStatus extends _ApplicationServiceStatus {\n    _builtin_original?: _ApplicationServiceStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationServiceStatusImpl  implements _ApplicationServiceStatus {\n    _builtin_original?: _ApplicationServiceStatus = undefined;\n    public routing_info: ApplicationServiceRoutingInfo ;\n    public alternate_mode_status: AlternateModeStatus  | undefined ;\n    constructor(base: _ApplicationServiceStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'routing_info') >= 0) {\n            this.routing_info = base.routing_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'alternate_mode_status') >= 0) {\n            this.alternate_mode_status = base.alternate_mode_status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newApplicationServiceStatusImpl(base: _ApplicationServiceStatus): ApplicationServiceStatusImpl {\n    return new ApplicationServiceStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The state for the application, either \\'active\\' or \\'disabled\\'. Setting to disabled will stop any components running in the agilicus infrastructure and disable access to the application. \n */\nexport type _ApplicationStateSelector = 'active' | 'disabled';\nexport type ApplicationStateSelector = _ApplicationStateSelector\n\nexport type ApplicationStateSelectorImpl = ApplicationStateSelector;\nexport const ApplicationStateSelector = {\n    active: 'active' as ApplicationStateSelector,\n    disabled: 'disabled' as ApplicationStateSelector\n};\n\nexport function newApplicationStateSelectorImpl(base: _ApplicationStateSelector): ApplicationStateSelectorImpl {\n    return base;\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ApplicationSummaryStatus, ApplicationSummaryStatus, ApplicationSummaryStatusImpl, newApplicationSummaryStatusImpl } from './applicationSummaryStatus';\n\n\n/**\n * A high level summary about an application useful for displaying it in a catalogue. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationSummary { \n    status: ApplicationSummaryStatus;\n}\n\nexport interface ApplicationSummary extends _ApplicationSummary {\n    _builtin_original?: _ApplicationSummary;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationSummaryImpl  implements _ApplicationSummary {\n    _builtin_original?: _ApplicationSummary = undefined;\n    public status: ApplicationSummaryStatus ;\n    constructor(base: _ApplicationSummary) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newApplicationSummaryImpl(base: _ApplicationSummary): ApplicationSummaryImpl {\n    return new ApplicationSummaryImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A high level summary about an application useful for displaying it in a catalogue. One of these exists per assignment of an application. For example, if an application has two instances and four assignments (two to each instance), there will be four of these objects for that application. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationSummaryStatus { \n    /**\n     * The ID of the application to which this organiastion is assigned.\n     */\n    application_id: string;\n    /**\n     * The name of the application\n     */\n    application_name: string;\n    /**\n     * The id of the organisation assigned to the application\n     */\n    assigned_org_id: string;\n    /**\n     * Whether or not this Application is published, and if so, how. An application that has been published somewhere will have high level details about it visible, such as its name and description. The enum values mean the following:   - no: This application is not published. It will only be visibile to users with       permission to access the application, or to administrators.   - public: This application is published to the public catalogue. Any user who       can request access to the organisation will see high level details about this       application. \n     */\n    published: ApplicationSummaryStatus.PublishedEnum;\n    /**\n     * A brief description of the application.\n     */\n    description?: string;\n    /**\n     * A category used to group similar applications together.\n     */\n    category?: string;\n    /**\n     * A url pointing to an icon representing this application. \n     */\n    icon_url: string;\n    /**\n     * The name of the default role of the application. This will be granted to users by default when an admin grants access to this application in response to a request for access. \n     */\n    default_role_name?: string | null;\n    /**\n     * The unique id the default role of the application. This will be granted to users by default when an admin grants access to this application in response to a request for access. \n     */\n    default_role_id?: string | null;\n}\n\nexport interface ApplicationSummaryStatus extends _ApplicationSummaryStatus {\n    _builtin_original?: _ApplicationSummaryStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationSummaryStatusImpl  implements _ApplicationSummaryStatus {\n    _builtin_original?: _ApplicationSummaryStatus = undefined;\n    public application_id: string ;\n    public application_name: string ;\n    public assigned_org_id: string ;\n    public published: ApplicationSummaryStatus.PublishedEnum ;\n    public description: string  | undefined ;\n    public category: string  | undefined ;\n    public icon_url: string ;\n    public default_role_name: string | null  | undefined ;\n    public default_role_id: string | null  | undefined ;\n    constructor(base: _ApplicationSummaryStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'application_id') >= 0) {\n            this.application_id = base.application_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_name') >= 0) {\n            this.application_name = base.application_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'assigned_org_id') >= 0) {\n            this.assigned_org_id = base.assigned_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'published') >= 0) {\n            this.published = base.published;\n        }\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'category') >= 0) {\n            this.category = base.category;\n        }\n        if (Object.keys(base).findIndex(key => key === 'icon_url') >= 0) {\n            this.icon_url = base.icon_url;\n        }\n        if (Object.keys(base).findIndex(key => key === 'default_role_name') >= 0) {\n            this.default_role_name = base.default_role_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'default_role_id') >= 0) {\n            this.default_role_id = base.default_role_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace ApplicationSummaryStatus {\n    export type PublishedEnum = 'no' | 'public';\n    export const PublishedEnum = {\n        no: 'no' as PublishedEnum,\n        public: 'public' as PublishedEnum\n    };\n}\n\n\nexport function newApplicationSummaryStatusImpl(base: _ApplicationSummaryStatus): ApplicationSummaryStatusImpl {\n    return new ApplicationSummaryStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ApplicationUpstreamFormInfo, ApplicationUpstreamFormInfo, ApplicationUpstreamFormInfoImpl, newApplicationUpstreamFormInfoImpl } from './applicationUpstreamFormInfo';\nimport { _ApplicationUpstreamValidation, ApplicationUpstreamValidation, ApplicationUpstreamValidationImpl, newApplicationUpstreamValidationImpl } from './applicationUpstreamValidation';\n\n\n/**\n * An Application Upstream provider is configuration for applications that act as their own identity provider.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationUpstreamConfig { \n    validation: ApplicationUpstreamValidation;\n    form_info?: ApplicationUpstreamFormInfo;\n}\n\nexport interface ApplicationUpstreamConfig extends _ApplicationUpstreamConfig {\n    _builtin_original?: _ApplicationUpstreamConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationUpstreamConfigImpl  implements _ApplicationUpstreamConfig {\n    _builtin_original?: _ApplicationUpstreamConfig = undefined;\n    public validation: ApplicationUpstreamValidation ;\n    public form_info: ApplicationUpstreamFormInfo  | undefined ;\n    constructor(base: _ApplicationUpstreamConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'validation') >= 0) {\n            this.validation = base.validation;\n        }\n        if (Object.keys(base).findIndex(key => key === 'form_info') >= 0) {\n            this.form_info = base.form_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newApplicationUpstreamConfigImpl(base: _ApplicationUpstreamConfig): ApplicationUpstreamConfigImpl {\n    return new ApplicationUpstreamConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Describes the properties of the form used to submit login information\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationUpstreamFormInfo { \n    /**\n     * The name of the username field in the login form\\'s html. This can be determined by inspecting the login page html using a tool like Chrome\\'s Dev Tools. \n     */\n    username_field: string;\n    /**\n     * The name of the password field in the login form\\'s html. This can be determined by inspecting the login page html using a tool like Chrome\\'s Dev Tools. \n     */\n    password_field: string;\n}\n\nexport interface ApplicationUpstreamFormInfo extends _ApplicationUpstreamFormInfo {\n    _builtin_original?: _ApplicationUpstreamFormInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationUpstreamFormInfoImpl  implements _ApplicationUpstreamFormInfo {\n    _builtin_original?: _ApplicationUpstreamFormInfo = undefined;\n    public username_field: string ;\n    public password_field: string ;\n    constructor(base: _ApplicationUpstreamFormInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'username_field') >= 0) {\n            this.username_field = base.username_field;\n        }\n        if (Object.keys(base).findIndex(key => key === 'password_field') >= 0) {\n            this.password_field = base.password_field;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newApplicationUpstreamFormInfoImpl(base: _ApplicationUpstreamFormInfo): ApplicationUpstreamFormInfoImpl {\n    return new ApplicationUpstreamFormInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AdminStatus, AdminStatus, AdminStatusImpl, newAdminStatusImpl } from './adminStatus';\nimport { _AutoCreateStatus, AutoCreateStatus, AutoCreateStatusImpl, newAutoCreateStatusImpl } from './autoCreateStatus';\nimport { _ApplicationUpstreamFormInfo, ApplicationUpstreamFormInfo, ApplicationUpstreamFormInfoImpl, newApplicationUpstreamFormInfoImpl } from './applicationUpstreamFormInfo';\nimport { _ApplicationUpstreamValidation, ApplicationUpstreamValidation, ApplicationUpstreamValidationImpl, newApplicationUpstreamValidationImpl } from './applicationUpstreamValidation';\nimport { _OperationalStatus, OperationalStatus, OperationalStatusImpl, newOperationalStatusImpl } from './operationalStatus';\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationUpstreamIdentityProvider { \n    /**\n     * A name used to uniquely refer to the upstream identity provider configuration. This is the text that will be displayed when presenting the upstream identity for login.\n     */\n    name?: string;\n    /**\n     * The upstream issuer uri. This is the URI which identifies the issuer against which users selecting this upstream will authenticate.\n     */\n    issuer?: string;\n    /**\n     * The type of upstream. For instance an OpenID Connector Upstream.\n     */\n    upstream_type?: ApplicationUpstreamIdentityProvider.UpstreamTypeEnum;\n    /**\n     * The icon file to be used, limited to: numbers, letters, underscores, hyphens and periods. It is part of a css class (with the periods replaced by underscores).  To use a custom icon than the provided default you will need to add the icon the static/img folder and update the static css file to add a new css button like below ```json .dex-btn-icon--<your-logo_svg> {   background-image: url(../static/img/<your-logo.svg>); } ```  To use a default icon simply enter an icon name from the pre-provided defaults found in the static/img folder The default icons are   - bitbucket   - coreos   - email   - github   - gitlab   - google   - ldap   - linkedin   - microsoft   - oidc   - saml \n     */\n    icon?: string;\n    auto_create_status?: AutoCreateStatus;\n    admin_status?: AdminStatus;\n    /**\n     * Inidicates whether traps (notifications) should be disabled for this entity. A true state indicates notifications will not be sent on transition. \n     */\n    trap_disabled?: boolean;\n    operational_status?: OperationalStatus;\n    validation: ApplicationUpstreamValidation;\n    form_info?: ApplicationUpstreamFormInfo;\n}\n\nexport interface ApplicationUpstreamIdentityProvider extends _ApplicationUpstreamIdentityProvider {\n    _builtin_original?: _ApplicationUpstreamIdentityProvider;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationUpstreamIdentityProviderImpl  implements _ApplicationUpstreamIdentityProvider {\n    _builtin_original?: _ApplicationUpstreamIdentityProvider = undefined;\n    public name: string  | undefined ;\n    public issuer: string  | undefined ;\n    public upstream_type: ApplicationUpstreamIdentityProvider.UpstreamTypeEnum  | undefined ;\n    public icon: string  | undefined ;\n    public auto_create_status: AutoCreateStatus  | undefined ;\n    public admin_status: AdminStatus  | undefined ;\n    public trap_disabled: boolean  | undefined ;\n    public operational_status: OperationalStatus  | undefined ;\n    public validation: ApplicationUpstreamValidation ;\n    public form_info: ApplicationUpstreamFormInfo  | undefined ;\n    constructor(base: _ApplicationUpstreamIdentityProvider) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer') >= 0) {\n            this.issuer = base.issuer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_type') >= 0) {\n            this.upstream_type = base.upstream_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'icon') >= 0) {\n            this.icon = base.icon;\n        }\n        if (Object.keys(base).findIndex(key => key === 'auto_create_status') >= 0) {\n            this.auto_create_status = base.auto_create_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'admin_status') >= 0) {\n            this.admin_status = base.admin_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'trap_disabled') >= 0) {\n            this.trap_disabled = base.trap_disabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'operational_status') >= 0) {\n            this.operational_status = base.operational_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'validation') >= 0) {\n            this.validation = base.validation;\n        }\n        if (Object.keys(base).findIndex(key => key === 'form_info') >= 0) {\n            this.form_info = base.form_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace ApplicationUpstreamIdentityProvider {\n    export type UpstreamTypeEnum = 'oidc' | 'local_auth' | 'application' | 'kerberos';\n    export const UpstreamTypeEnum = {\n        oidc: 'oidc' as UpstreamTypeEnum,\n        local_auth: 'local_auth' as UpstreamTypeEnum,\n        application: 'application' as UpstreamTypeEnum,\n        kerberos: 'kerberos' as UpstreamTypeEnum\n    };\n}\n\n\nexport function newApplicationUpstreamIdentityProviderImpl(base: _ApplicationUpstreamIdentityProvider): ApplicationUpstreamIdentityProviderImpl {\n    return new ApplicationUpstreamIdentityProviderImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Describes how to validate that an application login was successful. The authorization system makes the login request on behalf of the user and validates the http response code and optionally a set of cookies returned match the properties specified below. This is to ensure the login was successful and thus the users identity can be asserted to All cookies must be set if cookie based validation is used. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ApplicationUpstreamValidation { \n    /**\n     * the expected http response code the application returns on a successful login\n     */\n    successful_response_code: number;\n    /**\n     * the names of the various cookies the application sets on a successful login\n     */\n    expected_cookies?: Array<string>;\n}\n\nexport interface ApplicationUpstreamValidation extends _ApplicationUpstreamValidation {\n    _builtin_original?: _ApplicationUpstreamValidation;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ApplicationUpstreamValidationImpl  implements _ApplicationUpstreamValidation {\n    _builtin_original?: _ApplicationUpstreamValidation = undefined;\n    public successful_response_code: number ;\n    public expected_cookies: Array<string>  | undefined ;\n    constructor(base: _ApplicationUpstreamValidation) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'successful_response_code') >= 0) {\n            this.successful_response_code = base.successful_response_code;\n        }\n        if (Object.keys(base).findIndex(key => key === 'expected_cookies') >= 0) {\n            this.expected_cookies = base.expected_cookies;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newApplicationUpstreamValidationImpl(base: _ApplicationUpstreamValidation): ApplicationUpstreamValidationImpl {\n    return new ApplicationUpstreamValidationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StatsPublishingConnectorConfig, StatsPublishingConnectorConfig, StatsPublishingConnectorConfigImpl, newStatsPublishingConnectorConfigImpl } from './statsPublishingConnectorConfig';\n\n\n/**\n * The applied configuration for a connector\\'s stats collection. This can change frequently, since some of it is time-bound, so fetching it in an event-driven fashion is recommended. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AppliedConnectorStatsConfig { \n    publishing?: StatsPublishingConnectorConfig;\n}\n\nexport interface AppliedConnectorStatsConfig extends _AppliedConnectorStatsConfig {\n    _builtin_original?: _AppliedConnectorStatsConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AppliedConnectorStatsConfigImpl  implements _AppliedConnectorStatsConfig {\n    _builtin_original?: _AppliedConnectorStatsConfig = undefined;\n    public publishing: StatsPublishingConnectorConfig  | undefined ;\n    constructor(base: _AppliedConnectorStatsConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'publishing') >= 0) {\n            this.publishing = base.publishing;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAppliedConnectorStatsConfigImpl(base: _AppliedConnectorStatsConfig): AppliedConnectorStatsConfigImpl {\n    return new AppliedConnectorStatsConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An audit attribute associated with an audit record. An attribute provides additional information associated with the audit that is specific to the type of audit recorded.  For example, when a role is added to a user, a role \\'CREATE\\' event would be created, including attributes for:    - attribute for the application/resource associated with role    - attribute for the user associated with the user receiving the role    - attribute for the role itself, defining what actual role was received \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AuditAttribute { \n    /**\n     * The id of the associated attribute.\n     */\n    readonly attribute_id?: string;\n    /**\n     * The name of the attribute type. \n     */\n    readonly attribute_type?: string;\n    /**\n     * The org_id associated with this audit attribute.\n     */\n    readonly attribute_org_id?: string | null;\n    /**\n     * The name of the attribute.\n     */\n    readonly attribute_name?: string | null;\n}\n\nexport interface AuditAttribute extends _AuditAttribute {\n    _builtin_original?: _AuditAttribute;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AuditAttributeImpl  implements _AuditAttribute {\n    _builtin_original?: _AuditAttribute = undefined;\n    public readonly attribute_id: string  | undefined ;\n    public readonly attribute_type: string  | undefined ;\n    public readonly attribute_org_id: string | null  | undefined ;\n    public readonly attribute_name: string | null  | undefined ;\n    constructor(base: _AuditAttribute) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'attribute_id') >= 0) {\n            this.attribute_id = base.attribute_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'attribute_type') >= 0) {\n            this.attribute_type = base.attribute_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'attribute_org_id') >= 0) {\n            this.attribute_org_id = base.attribute_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'attribute_name') >= 0) {\n            this.attribute_name = base.attribute_name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAuditAttributeImpl(base: _AuditAttribute): AuditAttributeImpl {\n    return new AuditAttributeImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AuditAttribute, AuditAttribute, AuditAttributeImpl, newAuditAttributeImpl } from './auditAttribute';\n\n\n/**\n * An audit record containing information about a single action performed in the system.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Audit { \n    /**\n     * The id of the user performing the action\n     */\n    readonly user_id?: string;\n    /**\n     * The name of the resource type which was affected by the event which generated this record. The `target_id` field will uniquely identify, if possible, the record within the resource type. \n     */\n    readonly target_resource_type?: string;\n    /**\n     * The org_id associated with the target_id/target_resource_type. \n     */\n    readonly target_resource_org_id?: string;\n    /**\n     * The human friendly name assigned to the resource.\n     */\n    target_resource_name?: string | null;\n    /**\n     * The name of the API which generated the event. This will typically be a single value for many different target_resource_types. \n     */\n    readonly api_name?: string;\n    /**\n     * The organization of the user performing the action\n     */\n    readonly org_id?: string;\n    /**\n     * the time at which the log was generated\n     */\n    readonly time?: Date;\n    /**\n     * The type of action performed on the target\n     */\n    action?: string;\n    /**\n     * The IP address of the host initating the action\n     */\n    readonly source_ip?: string;\n    /**\n     * The id of the resource affected by the action\n     */\n    readonly target_id?: string;\n    /**\n     * The id of the bearer token used to authenticate when performing the action\n     */\n    readonly token_id?: string;\n    /**\n     * A correlation ID associated with requests related to this action\n     */\n    readonly trace_id?: string;\n    /**\n     * The session associated with this action. Sessions typically span multiple tokens. \n     */\n    readonly session?: string;\n    /**\n     * The secondary id of the resource affected by the action if one exists. This can occur if the resource\\'s primary key is a composite key. APIs whose resources are not referenced by a GUID in the path make use of these fields for example the replace_user_role endpoint uses the user_id, and application to identify a resource. \n     */\n    readonly secondary_id?: string;\n    /**\n     * The tertiary id of the resource affected by the action if one exists. This can occur if the resource\\'s primary key is a composite key. \n     */\n    readonly tertiary_id?: string;\n    /**\n     * The id of the parent resource for the resource affected by the action. An example of this is the path /v1/collection/2jkdcmwB97jh3kiglnz/subcollection/idabc123. The resource belongs to the `subcollection` which falls under the parent in this case `collection`. As a resulti idabc123 is the target_id, 2jkdCmwB9u7Jh3KIglNZ is the parent ID \n     */\n    readonly parent_id?: string;\n    /**\n     * The id of the grandparent resource for the resource affected by the action. An example of this is the path /v1/collection/2jkdcmwB97jh3kiglnz/subcollection/2334115135/subsubcolletion/aaabbbccc Similar to the parent id example  aaabbbccc is the target_id, 2334115135 is the parent ID and 2jkdcmwB97jh3kiglnz is the grandparent_id \n     */\n    readonly grandparent_id?: string;\n    /**\n     * A list of AuditAttributes\n     */\n    audit_attributes?: Array<AuditAttribute>;\n    /**\n     * A human readable summary of this audit.\n     */\n    description?: string;\n}\n\nexport interface Audit extends _Audit {\n    _builtin_original?: _Audit;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AuditImpl  implements _Audit {\n    _builtin_original?: _Audit = undefined;\n    public readonly user_id: string  | undefined ;\n    public readonly target_resource_type: string  | undefined ;\n    public readonly target_resource_org_id: string  | undefined ;\n    public target_resource_name: string | null  | undefined ;\n    public readonly api_name: string  | undefined ;\n    public readonly org_id: string  | undefined ;\n    public readonly time: Date  | undefined ;\n    public action: string  | undefined ;\n    public readonly source_ip: string  | undefined ;\n    public readonly target_id: string  | undefined ;\n    public readonly token_id: string  | undefined ;\n    public readonly trace_id: string  | undefined ;\n    public readonly session: string  | undefined ;\n    public readonly secondary_id: string  | undefined ;\n    public readonly tertiary_id: string  | undefined ;\n    public readonly parent_id: string  | undefined ;\n    public readonly grandparent_id: string  | undefined ;\n    public audit_attributes: Array<AuditAttribute>  | undefined ;\n    public description: string  | undefined ;\n    constructor(base: _Audit) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'target_resource_type') >= 0) {\n            this.target_resource_type = base.target_resource_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'target_resource_org_id') >= 0) {\n            this.target_resource_org_id = base.target_resource_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'target_resource_name') >= 0) {\n            this.target_resource_name = base.target_resource_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'api_name') >= 0) {\n            this.api_name = base.api_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'time') >= 0) {\n            this.time = base.time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'action') >= 0) {\n            this.action = base.action;\n        }\n        if (Object.keys(base).findIndex(key => key === 'source_ip') >= 0) {\n            this.source_ip = base.source_ip;\n        }\n        if (Object.keys(base).findIndex(key => key === 'target_id') >= 0) {\n            this.target_id = base.target_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_id') >= 0) {\n            this.token_id = base.token_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'trace_id') >= 0) {\n            this.trace_id = base.trace_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session') >= 0) {\n            this.session = base.session;\n        }\n        if (Object.keys(base).findIndex(key => key === 'secondary_id') >= 0) {\n            this.secondary_id = base.secondary_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'tertiary_id') >= 0) {\n            this.tertiary_id = base.tertiary_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'parent_id') >= 0) {\n            this.parent_id = base.parent_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'grandparent_id') >= 0) {\n            this.grandparent_id = base.grandparent_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'audit_attributes') >= 0) {\n            if (base.audit_attributes) {\n                this.audit_attributes = base.audit_attributes.map((original) => newAuditAttributeImpl(original));\n            } else {\n                this.audit_attributes = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.audit_attributes !== undefined) {\n            for (const item of this.audit_attributes) {\n                if (item !== undefined && (item as AuditAttributeImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AuditAttributeImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newAuditImpl(base: _Audit): AuditImpl {\n    return new AuditImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AuditDestinationSpec, AuditDestinationSpec, AuditDestinationSpecImpl, newAuditDestinationSpecImpl } from './auditDestinationSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\n\n\n/**\n * A destination for audit events. Each event may be sent to multiple destinations. The list of destinations for an organisation controls where event sources send events. Each destination can filter events so that it only captures relevant ones. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AuditDestination { \n    metadata?: MetadataWithId;\n    spec: AuditDestinationSpec;\n}\n\nexport interface AuditDestination extends _AuditDestination {\n    _builtin_original?: _AuditDestination;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AuditDestinationImpl  implements _AuditDestination {\n    _builtin_original?: _AuditDestination = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: AuditDestinationSpec ;\n    constructor(base: _AuditDestination) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAuditDestinationImpl(base: _AuditDestination): AuditDestinationImpl {\n    return new AuditDestinationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _HTTPBearerAuth, HTTPBearerAuth, HTTPBearerAuthImpl, newHTTPBearerAuthImpl } from './hTTPBearerAuth';\nimport { _HTTPBasicAuth, HTTPBasicAuth, HTTPBasicAuthImpl, newHTTPBasicAuthImpl } from './hTTPBasicAuth';\n\n\n/**\n * How an audit destination authenticates. For example, a webhook destination may require basic authentication. Not all destination types support all authentication schemes, nor do all audit agents. If the scheme is unsupported, the configuration may fail, leading to an error report. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AuditDestinationAuthentication { \n    /**\n     * The type of authentication to perform. The types have the following meanings:   - `none`: The destination is unauthenticated.   - `http_basic`: Uses HTTP basic (RFC7235) authentication. The username and password are provided in     the `http_basic` property.   - `http_bearer`: Uses HTTP bearer token (rfc6750) authentication. The token is provided      the `http_bearer` property.   - `agilicus_bearer`: Uses HTTP bearer token (rfc6750) authentication, with an access token from the     Agilicus infrastructure. The access token identifies the bearer as the `User` running the audit agent.   - `client_certificate`: Currently unsupported. \n     */\n    authentication_type: AuditDestinationAuthentication.AuthenticationTypeEnum;\n    http_basic?: HTTPBasicAuth;\n    http_bearer?: HTTPBearerAuth;\n}\n\nexport interface AuditDestinationAuthentication extends _AuditDestinationAuthentication {\n    _builtin_original?: _AuditDestinationAuthentication;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AuditDestinationAuthenticationImpl  implements _AuditDestinationAuthentication {\n    _builtin_original?: _AuditDestinationAuthentication = undefined;\n    public authentication_type: AuditDestinationAuthentication.AuthenticationTypeEnum ;\n    public http_basic: HTTPBasicAuth  | undefined ;\n    public http_bearer: HTTPBearerAuth  | undefined ;\n    constructor(base: _AuditDestinationAuthentication) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'authentication_type') >= 0) {\n            this.authentication_type = base.authentication_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'http_basic') >= 0) {\n            this.http_basic = base.http_basic;\n        }\n        if (Object.keys(base).findIndex(key => key === 'http_bearer') >= 0) {\n            this.http_bearer = base.http_bearer;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace AuditDestinationAuthentication {\n    export type AuthenticationTypeEnum = 'none' | 'http_basic' | 'http_bearer' | 'agilicus_bearer' | 'client_certificate';\n    export const AuthenticationTypeEnum = {\n        none: 'none' as AuthenticationTypeEnum,\n        http_basic: 'http_basic' as AuthenticationTypeEnum,\n        http_bearer: 'http_bearer' as AuthenticationTypeEnum,\n        agilicus_bearer: 'agilicus_bearer' as AuthenticationTypeEnum,\n        client_certificate: 'client_certificate' as AuthenticationTypeEnum\n    };\n}\n\n\nexport function newAuditDestinationAuthenticationImpl(base: _AuditDestinationAuthentication): AuditDestinationAuthenticationImpl {\n    return new AuditDestinationAuthenticationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A filter describing which sort of events should be sent to a destination. If both value and or_list are set, the filter will match if either match. If neither are set, the filter trivially passes. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AuditDestinationFilter { \n    /**\n     * The property of the event to filter on. The property can be related to the event itself, or something about the source of the event. Possible values include:   - `subsystem`: The subsystem emitting the event. E.g. access. This typically decides the structure of the logs emitted.  - `phase`: The phase within the subsystem emitting the event. Not all subsystems have more than one phase.  - `audit_agent_type`: The type of the agent emitting the event. E.g. connector  - `audit_agent_id`: The identifier of the agent emitting the event. E.g. for a connector, this is the GUID of the connector.  - `hostname`: The hostname of the system on which the agent resides. \n     */\n    filter_type: string;\n    /**\n     * The value to filter on. The possible values depend on the `filter_type`:  - `subsystem`: One of:     - `access`: Access events     - `authorization`: Authorization events     - `logs`: Log events - `phase`: This is reserved for future use. It currently has no meaning. - `audit_agent_type`: One of:   - `connector`: Any connector.   - `agent_connector`: An on-site agent connector. - `audit_agent_id`: A unique identifier for an audit agent. - `hostname`: A hostname. \n     */\n    value?: string;\n    /**\n     * A list of values this filter can match. If it matches any of them, it passes. \n     */\n    or_list?: Array<string>;\n}\n\nexport interface AuditDestinationFilter extends _AuditDestinationFilter {\n    _builtin_original?: _AuditDestinationFilter;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AuditDestinationFilterImpl  implements _AuditDestinationFilter {\n    _builtin_original?: _AuditDestinationFilter = undefined;\n    public filter_type: string ;\n    public value: string  | undefined ;\n    public or_list: Array<string>  | undefined ;\n    constructor(base: _AuditDestinationFilter) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'filter_type') >= 0) {\n            this.filter_type = base.filter_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'value') >= 0) {\n            this.value = base.value;\n        }\n        if (Object.keys(base).findIndex(key => key === 'or_list') >= 0) {\n            this.or_list = base.or_list;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAuditDestinationFilterImpl(base: _AuditDestinationFilter): AuditDestinationFilterImpl {\n    return new AuditDestinationFilterImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AuditDestinationAuthentication, AuditDestinationAuthentication, AuditDestinationAuthenticationImpl, newAuditDestinationAuthenticationImpl } from './auditDestinationAuthentication';\nimport { _AuditDestinationFilter, AuditDestinationFilter, AuditDestinationFilterImpl, newAuditDestinationFilterImpl } from './auditDestinationFilter';\n\n\n/**\n * The specification of an AuditDestination\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AuditDestinationSpec { \n    /**\n     * Whether to sent events to the AuditDestination at all. Setting `enabled` to `false` will direct all event sources to stop sending events to the AuditDestination. \n     */\n    enabled: boolean;\n    /**\n     * A descriptive name for the destination. This will be used in reporting and diagnostics. \n     */\n    name: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * The type of the destination. This controls how events are sent to the destination. This can be set to the following values:  - `file`: A file destination. The url is the path to a file on disk where events will be logged. The log format is JSONL. The log file is rotated. Old rotations are placed in the same directory as the log file. - `webhook`: A webhook destination. The url is points to an http server which will accept POSTs of an    AuditWebhookEvent object. The server should respond with an HTTP 2XX return code on success. The   event should be handled as a transaction: either all events are processed, or none. An HTTP 429   in conjunction with a Retry-After header may be used to tell the audit agent to back off. An HTTP   400 will instruct the audit agent to discard all of the events. - `graylog`: A graylog destination. The location points to a graylog server. - `syslog`: A syslog destination. The location points to a syslog server. - `connector`: A connector destination. The location points to a particular connector (connector_id) \n     */\n    destination_type: string;\n    /**\n     * The location of the destination. The meaning of the location changes based on the destination type.  - `file`: A URL of the path to the file on the local system. The URL should be of the form `file:///path/to/file`.    On Windows this can be `/drive/path/to/file`.  If the path is relative (`file://./path/to/file`), the relative path is    rooted at the directory from which the evnet source is running. \n     */\n    location: string;\n    /**\n     * The maximum number of events to emit to destination in one transaction. If unspecified, the value is unlimited. This can be useful if the destination (e.g. a webhook) has a maximum request size. \n     */\n    max_events_per_transaction?: number;\n    /**\n     * A short comment describing the purpose of the destination. This is only used for informational purposes. \n     */\n    comment: string;\n    /**\n     * The list of filters controlling which events are sent to this destination. All filters must pass in order to send an event to this destination. \n     */\n    filters: Array<AuditDestinationFilter>;\n    authentication?: AuditDestinationAuthentication;\n}\n\nexport interface AuditDestinationSpec extends _AuditDestinationSpec {\n    _builtin_original?: _AuditDestinationSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AuditDestinationSpecImpl  implements _AuditDestinationSpec {\n    _builtin_original?: _AuditDestinationSpec = undefined;\n    public enabled: boolean ;\n    public name: string ;\n    public org_id: string ;\n    public destination_type: string ;\n    public location: string ;\n    public max_events_per_transaction: number  | undefined ;\n    public comment: string ;\n    public filters: Array<AuditDestinationFilter> ;\n    public authentication: AuditDestinationAuthentication  | undefined ;\n    constructor(base: _AuditDestinationSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'destination_type') >= 0) {\n            this.destination_type = base.destination_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'location') >= 0) {\n            this.location = base.location;\n        }\n        if (Object.keys(base).findIndex(key => key === 'max_events_per_transaction') >= 0) {\n            this.max_events_per_transaction = base.max_events_per_transaction;\n        }\n        if (Object.keys(base).findIndex(key => key === 'comment') >= 0) {\n            this.comment = base.comment;\n        }\n        if (Object.keys(base).findIndex(key => key === 'filters') >= 0) {\n            if (base.filters) {\n                this.filters = base.filters.map((original) => newAuditDestinationFilterImpl(original));\n            } else {\n                this.filters = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'authentication') >= 0) {\n            this.authentication = base.authentication;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.filters !== undefined) {\n            for (const item of this.filters) {\n                if (item !== undefined && (item as AuditDestinationFilterImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AuditDestinationFilterImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newAuditDestinationSpecImpl(base: _AuditDestinationSpec): AuditDestinationSpecImpl {\n    return new AuditDestinationSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An audit event emitted by an Agilicus audit agent. The primary contents of the event are free-form to allow for easy extension. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AuditEvent { \n    /**\n     * A unique ID that can be used to determine whether the event has been processed multiple times. This should never happen, but it can\\'t hurt to be safe. \n     */\n    unique_id: string;\n    /**\n     * When the event was initially processed.\n     */\n    create_time: Date;\n    /**\n     * The primary contents of the audit event\n     */\n    event: object;\n}\n\nexport interface AuditEvent extends _AuditEvent {\n    _builtin_original?: _AuditEvent;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AuditEventImpl  implements _AuditEvent {\n    _builtin_original?: _AuditEvent = undefined;\n    public unique_id: string ;\n    public create_time: Date ;\n    public event: object ;\n    constructor(base: _AuditEvent) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'unique_id') >= 0) {\n            this.unique_id = base.unique_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'create_time') >= 0) {\n            this.create_time = base.create_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'event') >= 0) {\n            this.event = base.event;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAuditEventImpl(base: _AuditEvent): AuditEventImpl {\n    return new AuditEventImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * How the audit event was processed. This describes whether it was succesfull, and if not, what should be done (if anything) to rectify the situation. Optionally, extra information regarding any failures may be provided in the `status_message`. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AuditEventResponse { \n    /**\n     * A unique ID that can be used to determine whether the event has been processed multiple times. This should never happen, but it can\\'t hurt to be safe. \n     */\n    unique_id: string;\n    /**\n     * How the event was processed. The possible values mean:   - success: The event was succesfully processed. It can be discarded.   - duplicate: the event was a duplicate. It should be discarded.   - invalid: the event was invlaid. It should be discarded.   - unprocessed: the event could not be processed for some reason. It should be retried.   - too_busy: the handler was too busy. Try this event again later. Something else in the response should hint at when would     be a good time.  An unknown status should be treated as invalid so that events do not queue up waiting to be processed. It is unlikely that the caller will know how to handle an unknown status so that it can rectify the problem. \n     */\n    status: any | null;\n    /**\n     * An optional message describing what happened with the event. This can be useful for diagnostics. \n     */\n    status_message?: any | null;\n    /**\n     * The primary contents of the audit event. Optional for an audit response. Returning this can help with diagnostics, but it is not necessary. \n     */\n    event?: object;\n}\n\nexport interface AuditEventResponse extends _AuditEventResponse {\n    _builtin_original?: _AuditEventResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AuditEventResponseImpl  implements _AuditEventResponse {\n    _builtin_original?: _AuditEventResponse = undefined;\n    public unique_id: string ;\n    public status: any | null ;\n    public status_message: any | null  | undefined ;\n    public event: object  | undefined ;\n    constructor(base: _AuditEventResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'unique_id') >= 0) {\n            this.unique_id = base.unique_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status_message') >= 0) {\n            this.status_message = base.status_message;\n        }\n        if (Object.keys(base).findIndex(key => key === 'event') >= 0) {\n            this.event = base.event;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAuditEventResponseImpl(base: _AuditEventResponse): AuditEventResponseImpl {\n    return new AuditEventResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AuditEvent, AuditEvent, AuditEventImpl, newAuditEventImpl } from './auditEvent';\n\n\n/**\n * An collection of audit events emitted by an Agilicus audit agent. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AuditWebhookBulkEvent { \n    /**\n     * The list of events. Set the destination\\'s `max_events_per_transaction` to limit the number. \n     */\n    events: Array<AuditEvent>;\n    /**\n     * Whether to respond with the events from the request, even if they were all succesfully processed. \n     */\n    always_respond_with_events?: boolean;\n}\n\nexport interface AuditWebhookBulkEvent extends _AuditWebhookBulkEvent {\n    _builtin_original?: _AuditWebhookBulkEvent;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AuditWebhookBulkEventImpl  implements _AuditWebhookBulkEvent {\n    _builtin_original?: _AuditWebhookBulkEvent = undefined;\n    public events: Array<AuditEvent> ;\n    public always_respond_with_events: boolean  | undefined ;\n    constructor(base: _AuditWebhookBulkEvent) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'events') >= 0) {\n            if (base.events) {\n                this.events = base.events.map((original) => newAuditEventImpl(original));\n            } else {\n                this.events = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'always_respond_with_events') >= 0) {\n            this.always_respond_with_events = base.always_respond_with_events;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.events !== undefined) {\n            for (const item of this.events) {\n                if (item !== undefined && (item as AuditEventImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AuditEventImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newAuditWebhookBulkEventImpl(base: _AuditWebhookBulkEvent): AuditWebhookBulkEventImpl {\n    return new AuditWebhookBulkEventImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AuditEventResponse, AuditEventResponse, AuditEventResponseImpl, newAuditEventResponseImpl } from './auditEventResponse';\n\n\n/**\n * Describes the webhook events which were processed. For ease of error handling, the events are split into separate arrays, each indicating what should should be done with the events: either throw them away because they were processed, throw them away because they are bad, or retry them later. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AuditWebhookEventsProcessed { \n    /**\n     * The list of events which were succesfully processed. Note that this may be empty. If so, assume that any events not in the other lists were succesfully processed. \n     */\n    success_events: Array<AuditEventResponse>;\n    /**\n     * The list of events which were discarded. Do not send them again, as they will continue to be discarded. \n     */\n    discard_events: Array<AuditEventResponse>;\n    /**\n     * The list of events to retry. Consult `retry_after_date` and `retry_after_delay_seconds` for a hint to on when to try again. \n     */\n    retry_events: Array<AuditEventResponse>;\n    /**\n     * If any events are in the `retry_events` list, this can hint as to a good time to retry. Note that a `Retry-After` header can be used to convey this information as well. \n     */\n    retry_after_date?: Date;\n    /**\n     * If any events have the `too_busy` status, this can hint as to a delay to wait before trying again. The value is is fractional seconds. Note that a `Retry-After` header can be used to convey this information as well. \n     */\n    retry_after_delay_seconds?: number;\n}\n\nexport interface AuditWebhookEventsProcessed extends _AuditWebhookEventsProcessed {\n    _builtin_original?: _AuditWebhookEventsProcessed;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AuditWebhookEventsProcessedImpl  implements _AuditWebhookEventsProcessed {\n    _builtin_original?: _AuditWebhookEventsProcessed = undefined;\n    public success_events: Array<AuditEventResponse> ;\n    public discard_events: Array<AuditEventResponse> ;\n    public retry_events: Array<AuditEventResponse> ;\n    public retry_after_date: Date  | undefined ;\n    public retry_after_delay_seconds: number  | undefined ;\n    constructor(base: _AuditWebhookEventsProcessed) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'success_events') >= 0) {\n            if (base.success_events) {\n                this.success_events = base.success_events.map((original) => newAuditEventResponseImpl(original));\n            } else {\n                this.success_events = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'discard_events') >= 0) {\n            if (base.discard_events) {\n                this.discard_events = base.discard_events.map((original) => newAuditEventResponseImpl(original));\n            } else {\n                this.discard_events = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'retry_events') >= 0) {\n            if (base.retry_events) {\n                this.retry_events = base.retry_events.map((original) => newAuditEventResponseImpl(original));\n            } else {\n                this.retry_events = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'retry_after_date') >= 0) {\n            this.retry_after_date = base.retry_after_date;\n        }\n        if (Object.keys(base).findIndex(key => key === 'retry_after_delay_seconds') >= 0) {\n            this.retry_after_delay_seconds = base.retry_after_delay_seconds;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.success_events !== undefined) {\n            for (const item of this.success_events) {\n                if (item !== undefined && (item as AuditEventResponseImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AuditEventResponseImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.discard_events !== undefined) {\n            for (const item of this.discard_events) {\n                if (item !== undefined && (item as AuditEventResponseImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AuditEventResponseImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.retry_events !== undefined) {\n            for (const item of this.retry_events) {\n                if (item !== undefined && (item as AuditEventResponseImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AuditEventResponseImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newAuditWebhookEventsProcessedImpl(base: _AuditWebhookEventsProcessed): AuditWebhookEventsProcessedImpl {\n    return new AuditWebhookEventsProcessedImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An audit record containing authentication related actions. Each event of the authentication pipeline emits a record indicating what is going on:     - who is performing the action,     - what they are trying to log in to     - whether they succeeded (result) Use this to determine who accessed the system and when, as well as help with troubleshooting authentication issues. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AuthAudits { \n    /**\n     * The system-local id of the user performing the action.\n     */\n    user_id?: string;\n    /**\n     * The id of the user in the upstream system, if available.\n     */\n    upstream_user_id?: string;\n    /**\n     * The id of the organisation of the issuer against which the user is authenticating. \n     */\n    org_id?: string;\n    /**\n     * The name of the organisation of the issuer against which the user is authenticating. \n     */\n    org_name?: string;\n    /**\n     * the time at which the record was generated.\n     */\n    time?: Date;\n    /**\n     * The event which generated the record. The meaning of the event depends on the stage where it occured. Deprecated: this has been replaced with Result. \n     */\n    event?: string;\n    /**\n     * The event name which generated the record. The following events are supported:    \\\"Authentication Request\\\":  An OIDC 3-way handshake authentication request flow (RFC6749)    \\\"Identity Provider Authentication\\\": Authentication with an upstream identity provider.    \\\"Identity Provider Callback\\\": A callback received during the OIDC 3-way handshake that involves     communicating with the upstream identity provider.    \\\"Assertion Request\\\":  Authorization associated with a service account utilizing     an authentication document.    \\\"Policy Evaluation\\\": As part of authentication and authorization, policy is being evaluated.    \\\"Token\\\": Creation of an Access Token for access to Agilicus resources.    \\\"MFA Challenge\\\": A Multifactor method is required and this is communicating to the user     to invoke their MFA method. \n     */\n    event_name?: string;\n    /**\n     * The IP address of the host initiating the action\n     */\n    source_ip?: string;\n    /**\n     * The id of the token issued or reissued as part of the authentication.\n     */\n    token_id?: string;\n    /**\n     * A correlation ID associated with requests related to this event\n     */\n    trace_id?: string;\n    /**\n     * The session associated with tokens related to this event. This can be used to tie the actions undertaking by requests bearing tokens with the same session back to the authentication events which created the tokens. \n     */\n    session?: string;\n    /**\n     * The issuer the user logged in to.\n     */\n    issuer?: string;\n    /**\n     * The client id of the web application, client, etc. that the user is logging in with. Note that this is not the id of the `IssuerClient`, but rather the id presented to the authentication system to identify that client. This corresponds to `name` in the `IssuerClient`. \n     */\n    client_id?: string;\n    /**\n     * The name of the application within the system the user is logging in to.\n     */\n    application_name?: string;\n    /**\n     * The id of the organisation that the user is logging in to. Note that this is disctinct from the `org_id` field, which is tied to the issuer. This id is tied to the application. \n     */\n    login_org_id?: string;\n    /**\n     * The name of the organisation that the user is logging in to. This corresponds to `login_org_id`. \n     */\n    login_org_name?: string;\n    /**\n     * The name of the identity provider proving the identity of the user. \n     */\n    upstream_idp?: string;\n    /**\n     * The stage of the login process. This identifies where in the pipeline the event was generated. Deprecated, this has been replaced with event_name. \n     */\n    stage?: string;\n    /**\n     * The result of the event. The following results are supported:   \\\"Success\\\"   \\\"InProgress\\\"   \\\"Authenticate\\\"   \\\"DoMfa\\\"   \\\"Create\\\"   \\\"Failure\\\"   \\\"Denied\\\"   \\\"Timeout\\\"   \\\"CodeIssued\\\"   \\\"SessionExpired\\\" \n     */\n    result?: string;\n    /**\n     * The user agent of the client used to perform the login. \n     */\n    user_agent?: string;\n    /**\n     * The unique ID linking multiple parts of an authentication flow together. Use this to correlate multiple audit records to understand the end result of a single login attempt. \n     */\n    request_id?: string;\n}\n\nexport interface AuthAudits extends _AuthAudits {\n    _builtin_original?: _AuthAudits;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AuthAuditsImpl  implements _AuthAudits {\n    _builtin_original?: _AuthAudits = undefined;\n    public user_id: string  | undefined ;\n    public upstream_user_id: string  | undefined ;\n    public org_id: string  | undefined ;\n    public org_name: string  | undefined ;\n    public time: Date  | undefined ;\n    public event: string  | undefined ;\n    public event_name: string  | undefined ;\n    public source_ip: string  | undefined ;\n    public token_id: string  | undefined ;\n    public trace_id: string  | undefined ;\n    public session: string  | undefined ;\n    public issuer: string  | undefined ;\n    public client_id: string  | undefined ;\n    public application_name: string  | undefined ;\n    public login_org_id: string  | undefined ;\n    public login_org_name: string  | undefined ;\n    public upstream_idp: string  | undefined ;\n    public stage: string  | undefined ;\n    public result: string  | undefined ;\n    public user_agent: string  | undefined ;\n    public request_id: string  | undefined ;\n    constructor(base: _AuthAudits) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_user_id') >= 0) {\n            this.upstream_user_id = base.upstream_user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_name') >= 0) {\n            this.org_name = base.org_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'time') >= 0) {\n            this.time = base.time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'event') >= 0) {\n            this.event = base.event;\n        }\n        if (Object.keys(base).findIndex(key => key === 'event_name') >= 0) {\n            this.event_name = base.event_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'source_ip') >= 0) {\n            this.source_ip = base.source_ip;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_id') >= 0) {\n            this.token_id = base.token_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'trace_id') >= 0) {\n            this.trace_id = base.trace_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session') >= 0) {\n            this.session = base.session;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer') >= 0) {\n            this.issuer = base.issuer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'client_id') >= 0) {\n            this.client_id = base.client_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_name') >= 0) {\n            this.application_name = base.application_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'login_org_id') >= 0) {\n            this.login_org_id = base.login_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'login_org_name') >= 0) {\n            this.login_org_name = base.login_org_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_idp') >= 0) {\n            this.upstream_idp = base.upstream_idp;\n        }\n        if (Object.keys(base).findIndex(key => key === 'stage') >= 0) {\n            this.stage = base.stage;\n        }\n        if (Object.keys(base).findIndex(key => key === 'result') >= 0) {\n            this.result = base.result;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_agent') >= 0) {\n            this.user_agent = base.user_agent;\n        }\n        if (Object.keys(base).findIndex(key => key === 'request_id') >= 0) {\n            this.request_id = base.request_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAuthAuditsImpl(base: _AuthAudits): AuthAuditsImpl {\n    return new AuthAuditsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An attribute to be exposed for users authenticating against the system. Attributes allow the authentication subsystem to normalize a user\\'s federated information to a format consumable by different systems. In particular, they map information related to the user to a single value in the record returning to the relying party in the authentication transaction. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AuthenticationAttribute { \n    /**\n     * The of the attribute in the relying party\\'s schema. Case sensitive.\n     */\n    attribute_name: string;\n    /**\n     * The object path to a field to use as the attribute. If the value is not present, null or empty, the attribute will be omitted. \n     */\n    internal_attribute_path: string;\n}\n\nexport interface AuthenticationAttribute extends _AuthenticationAttribute {\n    _builtin_original?: _AuthenticationAttribute;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AuthenticationAttributeImpl  implements _AuthenticationAttribute {\n    _builtin_original?: _AuthenticationAttribute = undefined;\n    public attribute_name: string ;\n    public internal_attribute_path: string ;\n    constructor(base: _AuthenticationAttribute) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'attribute_name') >= 0) {\n            this.attribute_name = base.attribute_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'internal_attribute_path') >= 0) {\n            this.internal_attribute_path = base.internal_attribute_path;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAuthenticationAttributeImpl(base: _AuthenticationAttribute): AuthenticationAttributeImpl {\n    return new AuthenticationAttributeImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _AuthenticationDocumentStatus, AuthenticationDocumentStatus, AuthenticationDocumentStatusImpl, newAuthenticationDocumentStatusImpl } from './authenticationDocumentStatus';\nimport { _AuthenticationDocumentSpec, AuthenticationDocumentSpec, AuthenticationDocumentSpecImpl, newAuthenticationDocumentSpecImpl } from './authenticationDocumentSpec';\n\n\n/**\n * An authentication document is used to provide proof of identity without requiring an interactive, user-facing login.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AuthenticationDocument { \n    metadata?: MetadataWithId;\n    spec: AuthenticationDocumentSpec;\n    status?: AuthenticationDocumentStatus;\n}\n\nexport interface AuthenticationDocument extends _AuthenticationDocument {\n    _builtin_original?: _AuthenticationDocument;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AuthenticationDocumentImpl  implements _AuthenticationDocument {\n    _builtin_original?: _AuthenticationDocument = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: AuthenticationDocumentSpec ;\n    public status: AuthenticationDocumentStatus  | undefined ;\n    constructor(base: _AuthenticationDocument) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAuthenticationDocumentImpl(base: _AuthenticationDocument): AuthenticationDocumentImpl {\n    return new AuthenticationDocumentImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The configuration for an authentication document. An authentication document is used to generate identity assertions that are used to authenticate a service account. Deleting an authentication document is equivilent to revoking the document\\'s ability to request tokens. The key field is returned on creation only as this is a private key that must be keep secure. It is not stored by Agilicus. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AuthenticationDocumentSpec { \n    /**\n     * The user id requesting an authentication document\n     */\n    user_id: string;\n    /**\n     * The org id for the user requesting an authentication document\n     */\n    org_id: string;\n    /**\n     * The URL of the authentication issuer associated with this authentication document. This URL is used by service accounts to request a token.\n     */\n    auth_issuer_url?: string;\n    /**\n     * The authentication document expiry time in UTC. If ommitted the document does not expire.\n     */\n    expiry?: Date;\n}\n\nexport interface AuthenticationDocumentSpec extends _AuthenticationDocumentSpec {\n    _builtin_original?: _AuthenticationDocumentSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AuthenticationDocumentSpecImpl  implements _AuthenticationDocumentSpec {\n    _builtin_original?: _AuthenticationDocumentSpec = undefined;\n    public user_id: string ;\n    public org_id: string ;\n    public auth_issuer_url: string  | undefined ;\n    public expiry: Date  | undefined ;\n    constructor(base: _AuthenticationDocumentSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'auth_issuer_url') >= 0) {\n            this.auth_issuer_url = base.auth_issuer_url;\n        }\n        if (Object.keys(base).findIndex(key => key === 'expiry') >= 0) {\n            this.expiry = base.expiry;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAuthenticationDocumentSpecImpl(base: _AuthenticationDocumentSpec): AuthenticationDocumentSpecImpl {\n    return new AuthenticationDocumentSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The configuration for an authentication document\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AuthenticationDocumentStatus { \n    /**\n     * The authority that issued this authentication document\n     */\n    issuer?: string;\n    /**\n     * Audience(s) that this authentication document is intended for\n     */\n    audience?: string;\n    /**\n     * A PEM encoded key that is used to create identity assertions. This key is only returned on creation.\n     */\n    key?: string;\n}\n\nexport interface AuthenticationDocumentStatus extends _AuthenticationDocumentStatus {\n    _builtin_original?: _AuthenticationDocumentStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AuthenticationDocumentStatusImpl  implements _AuthenticationDocumentStatus {\n    _builtin_original?: _AuthenticationDocumentStatus = undefined;\n    public issuer: string  | undefined ;\n    public audience: string  | undefined ;\n    public key: string  | undefined ;\n    constructor(base: _AuthenticationDocumentStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'issuer') >= 0) {\n            this.issuer = base.issuer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'audience') >= 0) {\n            this.audience = base.audience;\n        }\n        if (Object.keys(base).findIndex(key => key === 'key') >= 0) {\n            this.key = base.key;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAuthenticationDocumentStatusImpl(base: _AuthenticationDocumentStatus): AuthenticationDocumentStatusImpl {\n    return new AuthenticationDocumentStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _SupportRequestAcknowledgementSpec, SupportRequestAcknowledgementSpec, SupportRequestAcknowledgementSpecImpl, newSupportRequestAcknowledgementSpecImpl } from './supportRequestAcknowledgementSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _SupportRequestAcknowledgementStatus, SupportRequestAcknowledgementStatus, SupportRequestAcknowledgementStatusImpl, newSupportRequestAcknowledgementStatusImpl } from './supportRequestAcknowledgementStatus';\n\n\n/**\n * An acknowledgement made by a supporting user to serve a support request \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SupportRequestAcknowledgement { \n    metadata?: MetadataWithId;\n    spec?: SupportRequestAcknowledgementSpec;\n    status?: SupportRequestAcknowledgementStatus;\n}\n\nexport interface SupportRequestAcknowledgement extends _SupportRequestAcknowledgement {\n    _builtin_original?: _SupportRequestAcknowledgement;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SupportRequestAcknowledgementImpl  implements _SupportRequestAcknowledgement {\n    _builtin_original?: _SupportRequestAcknowledgement = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: SupportRequestAcknowledgementSpec  | undefined ;\n    public status: SupportRequestAcknowledgementStatus  | undefined ;\n    constructor(base: _SupportRequestAcknowledgement) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSupportRequestAcknowledgementImpl(base: _SupportRequestAcknowledgement): SupportRequestAcknowledgementImpl {\n    return new SupportRequestAcknowledgementImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _SupportRequestAcknowledgement, SupportRequestAcknowledgement, SupportRequestAcknowledgementImpl, newSupportRequestAcknowledgementImpl } from './supportRequestAcknowledgement';\n\n\n/**\n * An object indicating internal federation and type for a user\\'s login.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AuthenticationFederationInfo { \n    /**\n     * Internal federation login type\n     */\n    type?: string;\n    /**\n     * A list of acknowledgements by the user. \n     */\n    acknowledgements?: Array<SupportRequestAcknowledgement>;\n}\n\nexport interface AuthenticationFederationInfo extends _AuthenticationFederationInfo {\n    _builtin_original?: _AuthenticationFederationInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AuthenticationFederationInfoImpl  implements _AuthenticationFederationInfo {\n    _builtin_original?: _AuthenticationFederationInfo = undefined;\n    public type: string  | undefined ;\n    public acknowledgements: Array<SupportRequestAcknowledgement>  | undefined ;\n    constructor(base: _AuthenticationFederationInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'type') >= 0) {\n            this.type = base.type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'acknowledgements') >= 0) {\n            if (base.acknowledgements) {\n                this.acknowledgements = base.acknowledgements.map((original) => newSupportRequestAcknowledgementImpl(original));\n            } else {\n                this.acknowledgements = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.acknowledgements !== undefined) {\n            for (const item of this.acknowledgements) {\n                if (item !== undefined && (item as SupportRequestAcknowledgementImpl)._remove_builtin_extensions !== undefined) {\n                    (item as SupportRequestAcknowledgementImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newAuthenticationFederationInfoImpl(base: _AuthenticationFederationInfo): AuthenticationFederationInfoImpl {\n    return new AuthenticationFederationInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The Policy Config Authz backend data. This contains various objects (maps) that map respective objects and their guids to the data. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _AuthzBundle { \n    /**\n     * Unique identifier\n     */\n    readonly org_id?: string;\n    user_data?: object;\n    organisations?: object;\n    issuer_upstreams?: object;\n    standalone_ruleset_bundles?: object;\n    resources?: object;\n    resource_urls?: object;\n    labelled_objects?: object;\n}\n\nexport interface AuthzBundle extends _AuthzBundle {\n    _builtin_original?: _AuthzBundle;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class AuthzBundleImpl  implements _AuthzBundle {\n    _builtin_original?: _AuthzBundle = undefined;\n    public readonly org_id: string  | undefined ;\n    public user_data: object  | undefined ;\n    public organisations: object  | undefined ;\n    public issuer_upstreams: object  | undefined ;\n    public standalone_ruleset_bundles: object  | undefined ;\n    public resources: object  | undefined ;\n    public resource_urls: object  | undefined ;\n    public labelled_objects: object  | undefined ;\n    constructor(base: _AuthzBundle) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_data') >= 0) {\n            this.user_data = base.user_data;\n        }\n        if (Object.keys(base).findIndex(key => key === 'organisations') >= 0) {\n            this.organisations = base.organisations;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer_upstreams') >= 0) {\n            this.issuer_upstreams = base.issuer_upstreams;\n        }\n        if (Object.keys(base).findIndex(key => key === 'standalone_ruleset_bundles') >= 0) {\n            this.standalone_ruleset_bundles = base.standalone_ruleset_bundles;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resources') >= 0) {\n            this.resources = base.resources;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_urls') >= 0) {\n            this.resource_urls = base.resource_urls;\n        }\n        if (Object.keys(base).findIndex(key => key === 'labelled_objects') >= 0) {\n            this.labelled_objects = base.labelled_objects;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newAuthzBundleImpl(base: _AuthzBundle): AuthzBundleImpl {\n    return new AuthzBundleImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Whether to automatically create users, and the status to assign to them when doing so. Users logging in from this upstream will be automatically created according to this setting if they do not already exist in the organisation. The status values have the following meanings:   * `active`: The user will be created with the active status. See UserSummary.status     for more details.   * `pending`: The user will be created with the pending status. See UserSummary.status     for more details.   * `disabled`: The user will be created with the disabled status. See UserSummary.status     for more details.   * `default`: Whether the user is automatically created depends on the organisation\\'s policy. \n */\nexport type _AutoCreateStatus = 'active' | 'pending' | 'disabled' | 'default';\nexport type AutoCreateStatus = _AutoCreateStatus\n\nexport type AutoCreateStatusImpl = AutoCreateStatus;\nexport const AutoCreateStatus = {\n    active: 'active' as AutoCreateStatus,\n    pending: 'pending' as AutoCreateStatus,\n    disabled: 'disabled' as AutoCreateStatus,\n    default: 'default' as AutoCreateStatus\n};\n\nexport function newAutoCreateStatusImpl(base: _AutoCreateStatus): AutoCreateStatusImpl {\n    return base;\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AdminStatus, AdminStatus, AdminStatusImpl, newAdminStatusImpl } from './adminStatus';\nimport { _AutoCreateStatus, AutoCreateStatus, AutoCreateStatusImpl, newAutoCreateStatusImpl } from './autoCreateStatus';\nimport { _OperationalStatus, OperationalStatus, OperationalStatusImpl, newOperationalStatusImpl } from './operationalStatus';\n\n\n/**\n * Base class of an upstream. This represents the common pieces of information for an upsteam.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BaseUpstream { \n    /**\n     * A name used to uniquely refer to the upstream identity provider configuration. This is the text that will be displayed when presenting the upstream identity for login.\n     */\n    name?: string;\n    /**\n     * The upstream issuer uri. This is the URI which identifies the issuer against which users selecting this upstream will authenticate.\n     */\n    issuer?: string;\n    /**\n     * The type of upstream. For instance an OpenID Connector Upstream.\n     */\n    upstream_type?: BaseUpstream.UpstreamTypeEnum;\n    /**\n     * The icon file to be used, limited to: numbers, letters, underscores, hyphens and periods. It is part of a css class (with the periods replaced by underscores).  To use a custom icon than the provided default you will need to add the icon the static/img folder and update the static css file to add a new css button like below ```json .dex-btn-icon--<your-logo_svg> {   background-image: url(../static/img/<your-logo.svg>); } ```  To use a default icon simply enter an icon name from the pre-provided defaults found in the static/img folder The default icons are   - bitbucket   - coreos   - email   - github   - gitlab   - google   - ldap   - linkedin   - microsoft   - oidc   - saml \n     */\n    icon?: string;\n    auto_create_status?: AutoCreateStatus;\n    admin_status?: AdminStatus;\n    /**\n     * Inidicates whether traps (notifications) should be disabled for this entity. A true state indicates notifications will not be sent on transition. \n     */\n    trap_disabled?: boolean;\n    operational_status?: OperationalStatus;\n}\n\nexport interface BaseUpstream extends _BaseUpstream {\n    _builtin_original?: _BaseUpstream;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BaseUpstreamImpl  implements _BaseUpstream {\n    _builtin_original?: _BaseUpstream = undefined;\n    public name: string  | undefined ;\n    public issuer: string  | undefined ;\n    public upstream_type: BaseUpstream.UpstreamTypeEnum  | undefined ;\n    public icon: string  | undefined ;\n    public auto_create_status: AutoCreateStatus  | undefined ;\n    public admin_status: AdminStatus  | undefined ;\n    public trap_disabled: boolean  | undefined ;\n    public operational_status: OperationalStatus  | undefined ;\n    constructor(base: _BaseUpstream) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer') >= 0) {\n            this.issuer = base.issuer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_type') >= 0) {\n            this.upstream_type = base.upstream_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'icon') >= 0) {\n            this.icon = base.icon;\n        }\n        if (Object.keys(base).findIndex(key => key === 'auto_create_status') >= 0) {\n            this.auto_create_status = base.auto_create_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'admin_status') >= 0) {\n            this.admin_status = base.admin_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'trap_disabled') >= 0) {\n            this.trap_disabled = base.trap_disabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'operational_status') >= 0) {\n            this.operational_status = base.operational_status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace BaseUpstream {\n    export type UpstreamTypeEnum = 'oidc' | 'local_auth' | 'application' | 'kerberos';\n    export const UpstreamTypeEnum = {\n        oidc: 'oidc' as UpstreamTypeEnum,\n        local_auth: 'local_auth' as UpstreamTypeEnum,\n        application: 'application' as UpstreamTypeEnum,\n        kerberos: 'kerberos' as UpstreamTypeEnum\n    };\n}\n\n\nexport function newBaseUpstreamImpl(base: _BaseUpstream): BaseUpstreamImpl {\n    return new BaseUpstreamImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _BaseUpstream, BaseUpstream, BaseUpstreamImpl, newBaseUpstreamImpl } from './baseUpstream';\n\n\n/**\n * Response object for a list issuer upstreams query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BaseUpstreams { \n    /**\n     * List of upstreams\n     */\n    upstreams?: Array<BaseUpstream>;\n}\n\nexport interface BaseUpstreams extends _BaseUpstreams {\n    _builtin_original?: _BaseUpstreams;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BaseUpstreamsImpl  implements _BaseUpstreams {\n    _builtin_original?: _BaseUpstreams = undefined;\n    public upstreams: Array<BaseUpstream>  | undefined ;\n    constructor(base: _BaseUpstreams) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'upstreams') >= 0) {\n            if (base.upstreams) {\n                this.upstreams = base.upstreams.map((original) => newBaseUpstreamImpl(original));\n            } else {\n                this.upstreams = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.upstreams !== undefined) {\n            for (const item of this.upstreams) {\n                if (item !== undefined && (item as BaseUpstreamImpl)._remove_builtin_extensions !== undefined) {\n                    (item as BaseUpstreamImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newBaseUpstreamsImpl(base: _BaseUpstreams): BaseUpstreamsImpl {\n    return new BaseUpstreamsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _BillingAccountStatus, BillingAccountStatus, BillingAccountStatusImpl, newBillingAccountStatusImpl } from './billingAccountStatus';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _BillingAccountSpec, BillingAccountSpec, BillingAccountSpecImpl, newBillingAccountSpecImpl } from './billingAccountSpec';\n\n\n/**\n * Object describing the properties of a Billing Account\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingAccount { \n    metadata?: MetadataWithId;\n    spec?: BillingAccountSpec;\n    status?: BillingAccountStatus;\n}\n\nexport interface BillingAccount extends _BillingAccount {\n    _builtin_original?: _BillingAccount;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingAccountImpl  implements _BillingAccount {\n    _builtin_original?: _BillingAccount = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: BillingAccountSpec  | undefined ;\n    public status: BillingAccountStatus  | undefined ;\n    constructor(base: _BillingAccount) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBillingAccountImpl(base: _BillingAccount): BillingAccountImpl {\n    return new BillingAccountImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _BillingAccountCurrencyMigrationSpec, BillingAccountCurrencyMigrationSpec, BillingAccountCurrencyMigrationSpecImpl, newBillingAccountCurrencyMigrationSpecImpl } from './billingAccountCurrencyMigrationSpec';\nimport { _BillingAccountCurrencyMigrationStatus, BillingAccountCurrencyMigrationStatus, BillingAccountCurrencyMigrationStatusImpl, newBillingAccountCurrencyMigrationStatusImpl } from './billingAccountCurrencyMigrationStatus';\n\n\n/**\n * Represents a request to migrate a customer from one currency to another. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingAccountCurrencyMigration { \n    spec: BillingAccountCurrencyMigrationSpec;\n    status?: BillingAccountCurrencyMigrationStatus;\n}\n\nexport interface BillingAccountCurrencyMigration extends _BillingAccountCurrencyMigration {\n    _builtin_original?: _BillingAccountCurrencyMigration;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingAccountCurrencyMigrationImpl  implements _BillingAccountCurrencyMigration {\n    _builtin_original?: _BillingAccountCurrencyMigration = undefined;\n    public spec: BillingAccountCurrencyMigrationSpec ;\n    public status: BillingAccountCurrencyMigrationStatus  | undefined ;\n    constructor(base: _BillingAccountCurrencyMigration) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBillingAccountCurrencyMigrationImpl(base: _BillingAccountCurrencyMigration): BillingAccountCurrencyMigrationImpl {\n    return new BillingAccountCurrencyMigrationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _BillingAccountMigrationSubscriptionLifecycle, BillingAccountMigrationSubscriptionLifecycle, BillingAccountMigrationSubscriptionLifecycleImpl, newBillingAccountMigrationSubscriptionLifecycleImpl } from './billingAccountMigrationSubscriptionLifecycle';\n\n\n/**\n * Controls how to migrate a customer from one billing account to another when changing currency. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingAccountCurrencyMigrationSpec { \n    /**\n     * The currency in which this customer is charged.\n     */\n    new_currency: string;\n    subscription_lifecycle: BillingAccountMigrationSubscriptionLifecycle;\n}\n\nexport interface BillingAccountCurrencyMigrationSpec extends _BillingAccountCurrencyMigrationSpec {\n    _builtin_original?: _BillingAccountCurrencyMigrationSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingAccountCurrencyMigrationSpecImpl  implements _BillingAccountCurrencyMigrationSpec {\n    _builtin_original?: _BillingAccountCurrencyMigrationSpec = undefined;\n    public new_currency: string ;\n    public subscription_lifecycle: BillingAccountMigrationSubscriptionLifecycle ;\n    constructor(base: _BillingAccountCurrencyMigrationSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'new_currency') >= 0) {\n            this.new_currency = base.new_currency;\n        }\n        if (Object.keys(base).findIndex(key => key === 'subscription_lifecycle') >= 0) {\n            this.subscription_lifecycle = base.subscription_lifecycle;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBillingAccountCurrencyMigrationSpecImpl(base: _BillingAccountCurrencyMigrationSpec): BillingAccountCurrencyMigrationSpecImpl {\n    return new BillingAccountCurrencyMigrationSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The result of the migration. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingAccountCurrencyMigrationStatus { \n    /**\n     * The result of the migration.  - `migrated`: the migration succeeded - `nop`: no change was necessary \n     */\n    result: BillingAccountCurrencyMigrationStatus.ResultEnum;\n    /**\n     * The ID of the new customer created in the migration \n     */\n    new_customer_id?: string;\n    /**\n     * The new subscriptions created in the migration. Note that these may actually be subscription schedules. \n     */\n    new_subscriptions?: Array<string>;\n    /**\n     * Unique identifier\n     */\n    new_billing_account_id?: string;\n    /**\n     * The GUIDs of the newly created billing subscriptions\n     */\n    new_billing_subscription_ids?: Array<string>;\n}\n\nexport interface BillingAccountCurrencyMigrationStatus extends _BillingAccountCurrencyMigrationStatus {\n    _builtin_original?: _BillingAccountCurrencyMigrationStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingAccountCurrencyMigrationStatusImpl  implements _BillingAccountCurrencyMigrationStatus {\n    _builtin_original?: _BillingAccountCurrencyMigrationStatus = undefined;\n    public result: BillingAccountCurrencyMigrationStatus.ResultEnum ;\n    public new_customer_id: string  | undefined ;\n    public new_subscriptions: Array<string>  | undefined ;\n    public new_billing_account_id: string  | undefined ;\n    public new_billing_subscription_ids: Array<string>  | undefined ;\n    constructor(base: _BillingAccountCurrencyMigrationStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'result') >= 0) {\n            this.result = base.result;\n        }\n        if (Object.keys(base).findIndex(key => key === 'new_customer_id') >= 0) {\n            this.new_customer_id = base.new_customer_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'new_subscriptions') >= 0) {\n            this.new_subscriptions = base.new_subscriptions;\n        }\n        if (Object.keys(base).findIndex(key => key === 'new_billing_account_id') >= 0) {\n            this.new_billing_account_id = base.new_billing_account_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'new_billing_subscription_ids') >= 0) {\n            this.new_billing_subscription_ids = base.new_billing_subscription_ids;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace BillingAccountCurrencyMigrationStatus {\n    export type ResultEnum = 'migrated' | 'nop';\n    export const ResultEnum = {\n        migrated: 'migrated' as ResultEnum,\n        nop: 'nop' as ResultEnum\n    };\n}\n\n\nexport function newBillingAccountCurrencyMigrationStatusImpl(base: _BillingAccountCurrencyMigrationStatus): BillingAccountCurrencyMigrationStatusImpl {\n    return new BillingAccountCurrencyMigrationStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Controls the lifecycle of subscriptions in the old and new billing accounts. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingAccountMigrationSubscriptionLifecycle { \n    /**\n     * The overall strategy for how to deprecate the old subscriptions and start new ones. - `start_now`: Ends the old subscription immediately and starts a new one, to be billed when the next one would have been. - `start_next_cycle`: Ends the old subscription when it complets its current cycle, and schedules the new one to start at the beginning of the next cycle. \n     */\n    strategy: BillingAccountMigrationSubscriptionLifecycle.StrategyEnum;\n}\n\nexport interface BillingAccountMigrationSubscriptionLifecycle extends _BillingAccountMigrationSubscriptionLifecycle {\n    _builtin_original?: _BillingAccountMigrationSubscriptionLifecycle;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingAccountMigrationSubscriptionLifecycleImpl  implements _BillingAccountMigrationSubscriptionLifecycle {\n    _builtin_original?: _BillingAccountMigrationSubscriptionLifecycle = undefined;\n    public strategy: BillingAccountMigrationSubscriptionLifecycle.StrategyEnum ;\n    constructor(base: _BillingAccountMigrationSubscriptionLifecycle) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'strategy') >= 0) {\n            this.strategy = base.strategy;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace BillingAccountMigrationSubscriptionLifecycle {\n    export type StrategyEnum = 'start_now' | 'start_next_cycle';\n    export const StrategyEnum = {\n        now: 'start_now' as StrategyEnum,\n        next_cycle: 'start_next_cycle' as StrategyEnum\n    };\n}\n\n\nexport function newBillingAccountMigrationSubscriptionLifecycleImpl(base: _BillingAccountMigrationSubscriptionLifecycle): BillingAccountMigrationSubscriptionLifecycleImpl {\n    return new BillingAccountMigrationSubscriptionLifecycleImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A constraint provided by a license. A license constraint is a CEL expression which can be used to evaluate various boolean questions, or return numeric information. The system renders the constraints prior to returning them for evaluation. This process involves collecting all constraints from various sources, merging them by name, then applying substitution as needed.  When two constraints share a name, the highest priority one is chosen. If two constraints share a name and a priority, then tie is broken in the following order, with the first being the highest priority.  - organisation level  - license level  - billing account level  - product level  - feature level  - table level  For example, if `max_resources` is defined as `\\'10000\\'` at the table level, 100 at the product level, and 1000 at the license level for license A, but not at all for license B, then license A would have `max_resources: 1000`, and license B would have `max_resources: 100`. This allows for defining consistent, global limits which may be overridden on a case-by-case basis. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LicenseConstraint { \n    /**\n     * The well-known name of the constraint. This is used by the system when evaluating whether an operation is allowed by a license, or in prodividing information about the license: a given constraint is identified by name by components of the system as part of a contract agreed upon when building a feature. Constraints may refer to other constraints by name. \n     */\n    name: string;\n    /**\n     * A valid CEL expression which may return any type of value. The default input document format is described by LicenseEvaluationInput \n     */\n    expression: string;\n    /**\n     * The priority of this constraint compared to other constraints of the same name. \n     */\n    priority: number;\n    /**\n     * An optional comment providing insight into the expression\n     */\n    comment?: string;\n}\n\nexport interface LicenseConstraint extends _LicenseConstraint {\n    _builtin_original?: _LicenseConstraint;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LicenseConstraintImpl  implements _LicenseConstraint {\n    _builtin_original?: _LicenseConstraint = undefined;\n    public name: string ;\n    public expression: string ;\n    public priority: number ;\n    public comment: string  | undefined ;\n    constructor(base: _LicenseConstraint) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'expression') >= 0) {\n            this.expression = base.expression;\n        }\n        if (Object.keys(base).findIndex(key => key === 'priority') >= 0) {\n            this.priority = base.priority;\n        }\n        if (Object.keys(base).findIndex(key => key === 'comment') >= 0) {\n            this.comment = base.comment;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newLicenseConstraintImpl(base: _LicenseConstraint): LicenseConstraintImpl {\n    return new LicenseConstraintImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LicenseConstraint, LicenseConstraint, LicenseConstraintImpl, newLicenseConstraintImpl } from './licenseConstraint';\n\n\n/**\n * Object describing the spec of a Billing Account\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingAccountSpec { \n    /**\n     * a guid describing the billing customer id\n     */\n    customer_id?: string;\n    /**\n     * The Product this BillingAccount is associated with. This property is deprecated. The product_id has been moved to the BilingOrgSubscription.\n     */\n    product_id?: string;\n    /**\n     * Billing account is in dev mode, used for connecting to non-live backend billing API. \n     */\n    dev_mode?: boolean;\n    /**\n     * Overrides for constraints applied to all licenses in this billing account. Only use in exceptional circumstances. \n     */\n    license_constraints?: Array<LicenseConstraint>;\n    /**\n     * A dictionary of values to pass in to constraint evaluation. These values will be provided to the constraints via the \\'input_vars\\' variable. Constraint variables are merged using the same priority as the constraints themselves. \n     */\n    constraint_variables?: { [key: string]: object | undefined; };\n}\n\nexport interface BillingAccountSpec extends _BillingAccountSpec {\n    _builtin_original?: _BillingAccountSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingAccountSpecImpl  implements _BillingAccountSpec {\n    _builtin_original?: _BillingAccountSpec = undefined;\n    public customer_id: string  | undefined ;\n    public product_id: string  | undefined ;\n    public dev_mode: boolean  | undefined ;\n    public license_constraints: Array<LicenseConstraint>  | undefined ;\n    public constraint_variables: { [key: string]: object | undefined; }  | undefined ;\n    constructor(base: _BillingAccountSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'customer_id') >= 0) {\n            this.customer_id = base.customer_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'product_id') >= 0) {\n            this.product_id = base.product_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'dev_mode') >= 0) {\n            this.dev_mode = base.dev_mode;\n        }\n        if (Object.keys(base).findIndex(key => key === 'license_constraints') >= 0) {\n            if (base.license_constraints) {\n                this.license_constraints = base.license_constraints.map((original) => newLicenseConstraintImpl(original));\n            } else {\n                this.license_constraints = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'constraint_variables') >= 0) {\n            this.constraint_variables = base.constraint_variables;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.license_constraints !== undefined) {\n            for (const item of this.license_constraints) {\n                if (item !== undefined && (item as LicenseConstraintImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LicenseConstraintImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newBillingAccountSpecImpl(base: _BillingAccountSpec): BillingAccountSpecImpl {\n    return new BillingAccountSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _BillingOrgSubscriptionSpec, BillingOrgSubscriptionSpec, BillingOrgSubscriptionSpecImpl, newBillingOrgSubscriptionSpecImpl } from './billingOrgSubscriptionSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _BillingOrgSubscriptionStatus, BillingOrgSubscriptionStatus, BillingOrgSubscriptionStatusImpl, newBillingOrgSubscriptionStatusImpl } from './billingOrgSubscriptionStatus';\n\n\n/**\n * A billing subscription that is associated with one or more organisations. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingOrgSubscription { \n    metadata?: MetadataWithId;\n    spec?: BillingOrgSubscriptionSpec;\n    status?: BillingOrgSubscriptionStatus;\n}\n\nexport interface BillingOrgSubscription extends _BillingOrgSubscription {\n    _builtin_original?: _BillingOrgSubscription;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingOrgSubscriptionImpl  implements _BillingOrgSubscription {\n    _builtin_original?: _BillingOrgSubscription = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: BillingOrgSubscriptionSpec  | undefined ;\n    public status: BillingOrgSubscriptionStatus  | undefined ;\n    constructor(base: _BillingOrgSubscription) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBillingOrgSubscriptionImpl(base: _BillingOrgSubscription): BillingOrgSubscriptionImpl {\n    return new BillingOrgSubscriptionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A Billing Subscription object.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingSubscription { \n    /**\n     * The subscription id\n     */\n    id?: string;\n}\n\nexport interface BillingSubscription extends _BillingSubscription {\n    _builtin_original?: _BillingSubscription;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingSubscriptionImpl  implements _BillingSubscription {\n    _builtin_original?: _BillingSubscription = undefined;\n    public id: string  | undefined ;\n    constructor(base: _BillingSubscription) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBillingSubscriptionImpl(base: _BillingSubscription): BillingSubscriptionImpl {\n    return new BillingSubscriptionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Controls an Agilicus feature\\'s settings\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FeatureFlag { \n    /**\n     * The name of the feature\n     */\n    feature: string;\n    /**\n     * Whether the feature is enabled\n     */\n    enabled: boolean;\n    /**\n     * a specific setting for the feature\n     */\n    setting?: string;\n}\n\nexport interface FeatureFlag extends _FeatureFlag {\n    _builtin_original?: _FeatureFlag;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FeatureFlagImpl  implements _FeatureFlag {\n    _builtin_original?: _FeatureFlag = undefined;\n    public feature: string ;\n    public enabled: boolean ;\n    public setting: string  | undefined ;\n    constructor(base: _FeatureFlag) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'feature') >= 0) {\n            this.feature = base.feature;\n        }\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'setting') >= 0) {\n            this.setting = base.setting;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFeatureFlagImpl(base: _FeatureFlag): FeatureFlagImpl {\n    return new FeatureFlagImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _OrganisationSystemOptions, OrganisationSystemOptions, OrganisationSystemOptionsImpl, newOrganisationSystemOptionsImpl } from './organisationSystemOptions';\nimport { _OrganisationCapabilities, OrganisationCapabilities, OrganisationCapabilitiesImpl, newOrganisationCapabilitiesImpl } from './organisationCapabilities';\nimport { _FeatureFlag, FeatureFlag, FeatureFlagImpl, newFeatureFlagImpl } from './featureFlag';\nimport { _OrganisationOwnerConfig, OrganisationOwnerConfig, OrganisationOwnerConfigImpl, newOrganisationOwnerConfigImpl } from './organisationOwnerConfig';\nimport { _OrganisationStatus, OrganisationStatus, OrganisationStatusImpl, newOrganisationStatusImpl } from './organisationStatus';\nimport { _OrganisationStateSelector, OrganisationStateSelector, OrganisationStateSelectorImpl, newOrganisationStateSelectorImpl } from './organisationStateSelector';\n\n\n/**\n *  Object describing the properties of an organisation  point_of_presence_name:  An Organisation can be assigned to a PointOfPresence, with the property point_of_presence_id. region_name:  An Organisation can be assigned to a Region, with the property region_id. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Organisation { \n    /**\n     * Unique identifier\n     */\n    readonly id?: string;\n    /**\n     * group id of group containing this organisations all users\n     */\n    all_users_group_id?: string;\n    /**\n     * group id of group containing this organisations all users including all sub organisations\n     */\n    all_users_all_suborgs_group_id?: string;\n    /**\n     * group id of group containing this organisations all users including only direct sub organisations\n     */\n    all_users_direct_suborgs_group_id?: string;\n    /**\n     * group id of group containing users automatically created when they logged in\n     */\n    auto_created_users_group_id?: string;\n    /**\n     * External unique identifier\n     */\n    external_id?: string;\n    /**\n     * organisation name\n     */\n    organisation?: string;\n    /**\n     * openid connect issuer\n     */\n    issuer?: string;\n    /**\n     * Unique identifier\n     */\n    issuer_id?: string;\n    /**\n     * Organisations subdomain. Note this must be unique accross all organisations\n     */\n    subdomain?: string;\n    /**\n     * A human readable slug to identify a resource and that is rfc1035 label compliant. The length has been restricted to 20 characters such that this name can be concatenated with other names or slugs. A slug is readOnly as it is generated by the backend resource. \n     */\n    name_slug?: string;\n    /**\n     * Creation time\n     */\n    readonly created?: Date;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n    /**\n     * GUID of the organisation admin\n     */\n    contact_id?: string;\n    /**\n     * The email address of the contact.\n     */\n    readonly contact_email?: string;\n    /**\n     * parent organisation id\n     */\n    parent_id?: string;\n    /**\n     * The id of the organisation at the root of this organisation hierarchy. For example, if A is the parent of B, and B is the parent of C, then A would be the root organisation of A, B and C. Note that this field will be ignored if changed. \n     */\n    root_org_id?: string;\n    /**\n     * Auto-creates a user\n     */\n    auto_create?: boolean;\n    /**\n     * The time window in seconds which represents the period of time for which a new user is eligible for trust on first use enrollment. The duration will be applied from the user\\'s created date, or if the user\\'s enrollment period was reset by an administrator. \n     */\n    trust_on_first_use_duration?: number;\n    /**\n     * A list of features to enable or disable. This is mostly for advanced use. No guarantees exist that a given feature will always exist by a given name, or that it will be configurable. \n     */\n    feature_flags?: Array<FeatureFlag>;\n    admin_state?: OrganisationStateSelector;\n    status?: OrganisationStatus;\n    /**\n     * The billing account id\n     */\n    billing_account_id?: string;\n    /**\n     * The billing subscription id\n     */\n    billing_subscription_id?: string;\n    /**\n     * The shard to use on the agilicus platform. This provides logical seperation on the agilicus platform. This can be used to prevent access to applications between suborgs in the same organisation. \n     */\n    shard?: string;\n    /**\n     * The agilicus cluster/region to host the platform on. This provides information to determine what physical location any services provided should run from. Consult the list of Regions for the possible values to set here. Changing this value will cause resources to move to the new cluster. Changing the setting will cause a few minutes of downtime while resources are moved. You will have to change the cname for your domain in order to attract traffic to the correct location. \n     */\n    cluster?: string;\n    configured_capabilities?: OrganisationCapabilities;\n    owner_config?: OrganisationOwnerConfig;\n    /**\n     * Override the default product label. \n     */\n    product_label_override?: string;\n    system_options?: OrganisationSystemOptions;\n    /**\n     * Global rules bundle id (see StandaloneRulesetBundle) applied globally across the organisation. \n     */\n    ruleset_bundle_id?: string;\n    /**\n     * Unique identifier\n     */\n    point_of_presence_id?: string;\n    /**\n     * The name of a tag. Tag names are case sensitive.\n     */\n    point_of_presence_name?: string;\n    /**\n     * Unique identifier\n     */\n    region_id?: string;\n    /**\n     * The region name this organisation is associated with\n     */\n    readonly region_name?: string;\n}\n\nexport interface Organisation extends _Organisation {\n    _builtin_original?: _Organisation;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OrganisationImpl  implements _Organisation {\n    _builtin_original?: _Organisation = undefined;\n    public readonly id: string  | undefined ;\n    public all_users_group_id: string  | undefined ;\n    public all_users_all_suborgs_group_id: string  | undefined ;\n    public all_users_direct_suborgs_group_id: string  | undefined ;\n    public auto_created_users_group_id: string  | undefined ;\n    public external_id: string  | undefined ;\n    public organisation: string  | undefined ;\n    public issuer: string  | undefined ;\n    public issuer_id: string  | undefined ;\n    public subdomain: string  | undefined ;\n    public name_slug: string  | undefined ;\n    public readonly created: Date  | undefined ;\n    public readonly updated: Date  | undefined ;\n    public contact_id: string  | undefined ;\n    public readonly contact_email: string  | undefined ;\n    public parent_id: string  | undefined ;\n    public root_org_id: string  | undefined ;\n    public auto_create: boolean  | undefined ;\n    public trust_on_first_use_duration: number  | undefined ;\n    public feature_flags: Array<FeatureFlag>  | undefined ;\n    public admin_state: OrganisationStateSelector  | undefined ;\n    public status: OrganisationStatus  | undefined ;\n    public billing_account_id: string  | undefined ;\n    public billing_subscription_id: string  | undefined ;\n    public shard: string  | undefined ;\n    public cluster: string  | undefined ;\n    public configured_capabilities: OrganisationCapabilities  | undefined ;\n    public owner_config: OrganisationOwnerConfig  | undefined ;\n    public product_label_override: string  | undefined ;\n    public system_options: OrganisationSystemOptions  | undefined ;\n    public ruleset_bundle_id: string  | undefined ;\n    public point_of_presence_id: string  | undefined ;\n    public point_of_presence_name: string  | undefined ;\n    public region_id: string  | undefined ;\n    public readonly region_name: string  | undefined ;\n    constructor(base: _Organisation) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'all_users_group_id') >= 0) {\n            this.all_users_group_id = base.all_users_group_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'all_users_all_suborgs_group_id') >= 0) {\n            this.all_users_all_suborgs_group_id = base.all_users_all_suborgs_group_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'all_users_direct_suborgs_group_id') >= 0) {\n            this.all_users_direct_suborgs_group_id = base.all_users_direct_suborgs_group_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'auto_created_users_group_id') >= 0) {\n            this.auto_created_users_group_id = base.auto_created_users_group_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'external_id') >= 0) {\n            this.external_id = base.external_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'organisation') >= 0) {\n            this.organisation = base.organisation;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer') >= 0) {\n            this.issuer = base.issuer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer_id') >= 0) {\n            this.issuer_id = base.issuer_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'subdomain') >= 0) {\n            this.subdomain = base.subdomain;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name_slug') >= 0) {\n            this.name_slug = base.name_slug;\n        }\n        if (Object.keys(base).findIndex(key => key === 'created') >= 0) {\n            this.created = base.created;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n        if (Object.keys(base).findIndex(key => key === 'contact_id') >= 0) {\n            this.contact_id = base.contact_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'contact_email') >= 0) {\n            this.contact_email = base.contact_email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'parent_id') >= 0) {\n            this.parent_id = base.parent_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'root_org_id') >= 0) {\n            this.root_org_id = base.root_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'auto_create') >= 0) {\n            this.auto_create = base.auto_create;\n        }\n        if (Object.keys(base).findIndex(key => key === 'trust_on_first_use_duration') >= 0) {\n            this.trust_on_first_use_duration = base.trust_on_first_use_duration;\n        }\n        if (Object.keys(base).findIndex(key => key === 'feature_flags') >= 0) {\n            if (base.feature_flags) {\n                this.feature_flags = base.feature_flags.map((original) => newFeatureFlagImpl(original));\n            } else {\n                this.feature_flags = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'admin_state') >= 0) {\n            this.admin_state = base.admin_state;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'billing_account_id') >= 0) {\n            this.billing_account_id = base.billing_account_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'billing_subscription_id') >= 0) {\n            this.billing_subscription_id = base.billing_subscription_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'shard') >= 0) {\n            this.shard = base.shard;\n        }\n        if (Object.keys(base).findIndex(key => key === 'cluster') >= 0) {\n            this.cluster = base.cluster;\n        }\n        if (Object.keys(base).findIndex(key => key === 'configured_capabilities') >= 0) {\n            this.configured_capabilities = base.configured_capabilities;\n        }\n        if (Object.keys(base).findIndex(key => key === 'owner_config') >= 0) {\n            this.owner_config = base.owner_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'product_label_override') >= 0) {\n            this.product_label_override = base.product_label_override;\n        }\n        if (Object.keys(base).findIndex(key => key === 'system_options') >= 0) {\n            this.system_options = base.system_options;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ruleset_bundle_id') >= 0) {\n            this.ruleset_bundle_id = base.ruleset_bundle_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'point_of_presence_id') >= 0) {\n            this.point_of_presence_id = base.point_of_presence_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'point_of_presence_name') >= 0) {\n            this.point_of_presence_name = base.point_of_presence_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'region_id') >= 0) {\n            this.region_id = base.region_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'region_name') >= 0) {\n            this.region_name = base.region_name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.feature_flags !== undefined) {\n            for (const item of this.feature_flags) {\n                if (item !== undefined && (item as FeatureFlagImpl)._remove_builtin_extensions !== undefined) {\n                    (item as FeatureFlagImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newOrganisationImpl(base: _Organisation): OrganisationImpl {\n    return new OrganisationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The backend provider product \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingProduct { \n    /**\n     * Unique identifier for this product\n     */\n    id?: string;\n    /**\n     * The product\\'s name, meant to be displayable to the customer.\n     */\n    name?: string;\n}\n\nexport interface BillingProduct extends _BillingProduct {\n    _builtin_original?: _BillingProduct;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingProductImpl  implements _BillingProduct {\n    _builtin_original?: _BillingProduct = undefined;\n    public id: string  | undefined ;\n    public name: string  | undefined ;\n    constructor(base: _BillingProduct) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBillingProductImpl(base: _BillingProduct): BillingProductImpl {\n    return new BillingProductImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _BillingOrgSubscription, BillingOrgSubscription, BillingOrgSubscriptionImpl, newBillingOrgSubscriptionImpl } from './billingOrgSubscription';\nimport { _BillingSubscription, BillingSubscription, BillingSubscriptionImpl, newBillingSubscriptionImpl } from './billingSubscription';\nimport { _Organisation, Organisation, OrganisationImpl, newOrganisationImpl } from './organisation';\nimport { _Product, Product, ProductImpl, newProductImpl } from './product';\nimport { _BillingCustomer, BillingCustomer, BillingCustomerImpl, newBillingCustomerImpl } from './billingCustomer';\nimport { _BillingProduct, BillingProduct, BillingProductImpl, newBillingProductImpl } from './billingProduct';\n\n\n/**\n * Object describing the spec of a Billing Account\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingAccountStatus { \n    /**\n     * the list of organisations that are connected to this billing account. \n     */\n    orgs?: Array<Organisation>;\n    /**\n     * The subscriptions associated with this billing account. \n     */\n    subscriptions?: Array<BillingSubscription>;\n    customer?: BillingCustomer;\n    /**\n     * The products associated with this billing account.  This property is deprecated. The products are moved to the BilingOrgSubscription. \n     */\n    products?: Array<BillingProduct>;\n    product?: Product;\n    /**\n     * The org subscriptions associated with this billing account. \n     */\n    org_subscriptions?: Array<BillingOrgSubscription>;\n    /**\n     * The stripe publishable key\n     */\n    publishable_key?: string;\n}\n\nexport interface BillingAccountStatus extends _BillingAccountStatus {\n    _builtin_original?: _BillingAccountStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingAccountStatusImpl  implements _BillingAccountStatus {\n    _builtin_original?: _BillingAccountStatus = undefined;\n    public orgs: Array<Organisation>  | undefined ;\n    public subscriptions: Array<BillingSubscription>  | undefined ;\n    public customer: BillingCustomer  | undefined ;\n    public products: Array<BillingProduct>  | undefined ;\n    public product: Product  | undefined ;\n    public org_subscriptions: Array<BillingOrgSubscription>  | undefined ;\n    public publishable_key: string  | undefined ;\n    constructor(base: _BillingAccountStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'orgs') >= 0) {\n            if (base.orgs) {\n                this.orgs = base.orgs.map((original) => newOrganisationImpl(original));\n            } else {\n                this.orgs = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'subscriptions') >= 0) {\n            if (base.subscriptions) {\n                this.subscriptions = base.subscriptions.map((original) => newBillingSubscriptionImpl(original));\n            } else {\n                this.subscriptions = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'customer') >= 0) {\n            this.customer = base.customer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'products') >= 0) {\n            if (base.products) {\n                this.products = base.products.map((original) => newBillingProductImpl(original));\n            } else {\n                this.products = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'product') >= 0) {\n            this.product = base.product;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_subscriptions') >= 0) {\n            if (base.org_subscriptions) {\n                this.org_subscriptions = base.org_subscriptions.map((original) => newBillingOrgSubscriptionImpl(original));\n            } else {\n                this.org_subscriptions = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'publishable_key') >= 0) {\n            this.publishable_key = base.publishable_key;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.orgs !== undefined) {\n            for (const item of this.orgs) {\n                if (item !== undefined && (item as OrganisationImpl)._remove_builtin_extensions !== undefined) {\n                    (item as OrganisationImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.subscriptions !== undefined) {\n            for (const item of this.subscriptions) {\n                if (item !== undefined && (item as BillingSubscriptionImpl)._remove_builtin_extensions !== undefined) {\n                    (item as BillingSubscriptionImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.products !== undefined) {\n            for (const item of this.products) {\n                if (item !== undefined && (item as BillingProductImpl)._remove_builtin_extensions !== undefined) {\n                    (item as BillingProductImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.org_subscriptions !== undefined) {\n            for (const item of this.org_subscriptions) {\n                if (item !== undefined && (item as BillingOrgSubscriptionImpl)._remove_builtin_extensions !== undefined) {\n                    (item as BillingOrgSubscriptionImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newBillingAccountStatusImpl(base: _BillingAccountStatus): BillingAccountStatusImpl {\n    return new BillingAccountStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Customer Balance transactions represent funds moving through your Stripe account. Stripe creates them for every type of transaction that enters or leaves your Stripe account balance. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingBalanceTransaction { \n    /**\n     * Gross amount of this transaction (in cents). A positive value represents funds applied to this subscription. A negative value represents funds removed from this transaction. \n     */\n    amount?: number;\n    /**\n     * An arbitrary string attached to the object. Often useful for displaying to users. \n     */\n    description?: string;\n    /**\n     * The currency type for the amount property. \n     */\n    currency?: string;\n}\n\nexport interface BillingBalanceTransaction extends _BillingBalanceTransaction {\n    _builtin_original?: _BillingBalanceTransaction;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingBalanceTransactionImpl  implements _BillingBalanceTransaction {\n    _builtin_original?: _BillingBalanceTransaction = undefined;\n    public amount: number  | undefined ;\n    public description: string  | undefined ;\n    public currency: string  | undefined ;\n    constructor(base: _BillingBalanceTransaction) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'amount') >= 0) {\n            this.amount = base.amount;\n        }\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'currency') >= 0) {\n            this.currency = base.currency;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBillingBalanceTransactionImpl(base: _BillingBalanceTransaction): BillingBalanceTransactionImpl {\n    return new BillingBalanceTransactionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A checkout session\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingCheckoutSession { \n    /**\n     * Unique identifier for the object.\n     */\n    id?: string;\n    /**\n     * The URL to the Checkout Session\n     */\n    url?: string;\n}\n\nexport interface BillingCheckoutSession extends _BillingCheckoutSession {\n    _builtin_original?: _BillingCheckoutSession;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingCheckoutSessionImpl  implements _BillingCheckoutSession {\n    _builtin_original?: _BillingCheckoutSession = undefined;\n    public id: string  | undefined ;\n    public url: string  | undefined ;\n    constructor(base: _BillingCheckoutSession) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'url') >= 0) {\n            this.url = base.url;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBillingCheckoutSessionImpl(base: _BillingCheckoutSession): BillingCheckoutSessionImpl {\n    return new BillingCheckoutSessionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A billable customer assigned to one or more organisations.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingCustomer { \n    /**\n     * Unique identifier for the object.\n     */\n    id?: string;\n    /**\n     * The customer\\'s full name or business name.\n     */\n    name?: string;\n    /**\n     * The customer\\'s email address\n     */\n    email?: string;\n    /**\n     * The current balance, if any, that’s stored on the customer. If negative, the customer has credit to apply to their next invoice. If positive, the customer has an amount owed that’s added to their next invoice. The balance only considers amounts that Stripe hasn’t successfully applied to any invoice. It doesn’t reflect unpaid invoices. This balance is only taken into account after invoices finalize. \n     */\n    balance?: number;\n    /**\n     * Time at which the object was created. Measured in seconds since the Unix epoch.\n     */\n    created?: number;\n    /**\n     * Three-letter [ISO code for the currency](https://stripe.com/docs/currencies) the customer can be charged in for recurring billing purposes.\n     */\n    currency?: string | null;\n    /**\n     * An arbitrary string attached to the object. Often useful for displaying to users.\n     */\n    description?: string | null;\n    /**\n     * The prefix for the customer used to generate unique invoice numbers.\n     */\n    invoice_prefix?: string | null;\n    /**\n     * Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.\n     */\n    livemode?: boolean;\n    /**\n     * Set of [key-value pairs](https://stripe.com/docs/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.\n     */\n    metadata?: { [key: string]: string | undefined; };\n    /**\n     * The customer\\'s phone number.\n     */\n    phone?: string | null;\n}\n\nexport interface BillingCustomer extends _BillingCustomer {\n    _builtin_original?: _BillingCustomer;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingCustomerImpl  implements _BillingCustomer {\n    _builtin_original?: _BillingCustomer = undefined;\n    public id: string  | undefined ;\n    public name: string  | undefined ;\n    public email: string  | undefined ;\n    public balance: number  | undefined ;\n    public created: number  | undefined ;\n    public currency: string | null  | undefined ;\n    public description: string | null  | undefined ;\n    public invoice_prefix: string | null  | undefined ;\n    public livemode: boolean  | undefined ;\n    public metadata: { [key: string]: string | undefined; }  | undefined ;\n    public phone: string | null  | undefined ;\n    constructor(base: _BillingCustomer) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'email') >= 0) {\n            this.email = base.email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'balance') >= 0) {\n            this.balance = base.balance;\n        }\n        if (Object.keys(base).findIndex(key => key === 'created') >= 0) {\n            this.created = base.created;\n        }\n        if (Object.keys(base).findIndex(key => key === 'currency') >= 0) {\n            this.currency = base.currency;\n        }\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'invoice_prefix') >= 0) {\n            this.invoice_prefix = base.invoice_prefix;\n        }\n        if (Object.keys(base).findIndex(key => key === 'livemode') >= 0) {\n            this.livemode = base.livemode;\n        }\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'phone') >= 0) {\n            this.phone = base.phone;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBillingCustomerImpl(base: _BillingCustomer): BillingCustomerImpl {\n    return new BillingCustomerImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An organisation connected to a billing account.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingOrg { \n    /**\n     * Unique identifier\n     */\n    readonly org_id?: string;\n    /**\n     * When true, the operation will cascade the operation for all suborganisations of org_id. \n     */\n    cascade?: boolean;\n}\n\nexport interface BillingOrg extends _BillingOrg {\n    _builtin_original?: _BillingOrg;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingOrgImpl  implements _BillingOrg {\n    _builtin_original?: _BillingOrg = undefined;\n    public readonly org_id: string  | undefined ;\n    public cascade: boolean  | undefined ;\n    constructor(base: _BillingOrg) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'cascade') >= 0) {\n            this.cascade = base.cascade;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBillingOrgImpl(base: _BillingOrg): BillingOrgImpl {\n    return new BillingOrgImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Object describing the subscription balance\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingOrgSubscriptionBalance { \n    /**\n     * A Billing Upcoming Invoice object.\n     */\n    upcoming_invoice?: object;\n    /**\n     * The current subscription balance (in cents) \n     */\n    subscription_balance?: number;\n    /**\n     * An estimate of the date when the subscription_balance will be consumed. This estimate is based upon the upcoming_invoice. \n     */\n    estimate_balance_end_date?: Date;\n}\n\nexport interface BillingOrgSubscriptionBalance extends _BillingOrgSubscriptionBalance {\n    _builtin_original?: _BillingOrgSubscriptionBalance;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingOrgSubscriptionBalanceImpl  implements _BillingOrgSubscriptionBalance {\n    _builtin_original?: _BillingOrgSubscriptionBalance = undefined;\n    public upcoming_invoice: object  | undefined ;\n    public subscription_balance: number  | undefined ;\n    public estimate_balance_end_date: Date  | undefined ;\n    constructor(base: _BillingOrgSubscriptionBalance) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'upcoming_invoice') >= 0) {\n            this.upcoming_invoice = base.upcoming_invoice;\n        }\n        if (Object.keys(base).findIndex(key => key === 'subscription_balance') >= 0) {\n            this.subscription_balance = base.subscription_balance;\n        }\n        if (Object.keys(base).findIndex(key => key === 'estimate_balance_end_date') >= 0) {\n            this.estimate_balance_end_date = base.estimate_balance_end_date;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBillingOrgSubscriptionBalanceImpl(base: _BillingOrgSubscriptionBalance): BillingOrgSubscriptionBalanceImpl {\n    return new BillingOrgSubscriptionBalanceImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Override to billing-usage job, including minimum-commit. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingSubscriptionUsageOverrideItem { \n    /**\n     * The stripe metric (e.g. active_users) to override\n     */\n    metric?: string;\n    /**\n     * Usage reported is max(min_quantity, actual_quantity) This provides a committed-usage. \n     */\n    min_quantity?: number;\n    /**\n     * Usage reported is min(max_quantity, actual_quantity). This provides a cap, not-to-exceed. \n     */\n    max_quantity?: number;\n    /**\n     * If set, the usage is stepped by this amount (e.g. rounded up to a multiple of this bounder). \n     */\n    step_size?: number | null;\n    /**\n     * If set to True, the rules above are applied to each org individually in the subscription. E.g. if there is a parent org with 3 users, and 2 child orgs, each with 1 user... if the \\'min_quantity\\' is \\'5\\', if this is False, the summation reported will be 5. If this field is True, the summation reported will be 15. If False or Null, all orgs are amalgamated and then the rules are run. The default is False. \n     */\n    group_by_org?: boolean | null;\n}\n\nexport interface BillingSubscriptionUsageOverrideItem extends _BillingSubscriptionUsageOverrideItem {\n    _builtin_original?: _BillingSubscriptionUsageOverrideItem;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingSubscriptionUsageOverrideItemImpl  implements _BillingSubscriptionUsageOverrideItem {\n    _builtin_original?: _BillingSubscriptionUsageOverrideItem = undefined;\n    public metric: string  | undefined ;\n    public min_quantity: number  | undefined ;\n    public max_quantity: number  | undefined ;\n    public step_size: number | null  | undefined ;\n    public group_by_org: boolean | null  | undefined ;\n    constructor(base: _BillingSubscriptionUsageOverrideItem) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metric') >= 0) {\n            this.metric = base.metric;\n        }\n        if (Object.keys(base).findIndex(key => key === 'min_quantity') >= 0) {\n            this.min_quantity = base.min_quantity;\n        }\n        if (Object.keys(base).findIndex(key => key === 'max_quantity') >= 0) {\n            this.max_quantity = base.max_quantity;\n        }\n        if (Object.keys(base).findIndex(key => key === 'step_size') >= 0) {\n            this.step_size = base.step_size;\n        }\n        if (Object.keys(base).findIndex(key => key === 'group_by_org') >= 0) {\n            this.group_by_org = base.group_by_org;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBillingSubscriptionUsageOverrideItemImpl(base: _BillingSubscriptionUsageOverrideItem): BillingSubscriptionUsageOverrideItemImpl {\n    return new BillingSubscriptionUsageOverrideItemImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LicenseConstraint, LicenseConstraint, LicenseConstraintImpl, newLicenseConstraintImpl } from './licenseConstraint';\nimport { _BillingSubscriptionCancelDetail, BillingSubscriptionCancelDetail, BillingSubscriptionCancelDetailImpl, newBillingSubscriptionCancelDetailImpl } from './billingSubscriptionCancelDetail';\nimport { _BillingSubscriptionUsageOverrideItem, BillingSubscriptionUsageOverrideItem, BillingSubscriptionUsageOverrideItemImpl, newBillingSubscriptionUsageOverrideItemImpl } from './billingSubscriptionUsageOverrideItem';\n\n\n/**\n * Object describing the spec of a Billing Org Subscription. Links to a license by license_id. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingOrgSubscriptionSpec { \n    /**\n     * the billing_account_id associated with this subscription\n     */\n    billing_account_id: string;\n    /**\n     * Billing subscription is in dev mode, used for connecting to non-live backend billing API. \n     */\n    dev_mode?: boolean;\n    /**\n     * The subscription_id associated with this BillingAccountSubscription\n     */\n    subscription_id?: string | null;\n    /**\n     * Override to billing-usage job, including minimum-commit. \n     */\n    usage_override?: Array<BillingSubscriptionUsageOverrideItem> | null;\n    /**\n     * a list of features to apply to this org subscription\n     */\n    feature_overrides?: Array<string> | null;\n    /**\n     * The Product this BillingOrgSubscription is associated with.\n     */\n    product_id?: string;\n    cancel_detail?: BillingSubscriptionCancelDetail;\n    /**\n     * Unique identifier\n     */\n    license_id?: string;\n    /**\n     * Overrides for constraints applied to this license. Only use in exceptional circumstances. \n     */\n    license_constraints?: Array<LicenseConstraint>;\n    /**\n     * A dictionary of values to pass in to constraint evaluation. These values will be provided to the constraints via the \\'input_vars\\' variable. Constraint variables are merged using the same priority as the constraints themselves. \n     */\n    constraint_variables?: { [key: string]: object | undefined; };\n}\n\nexport interface BillingOrgSubscriptionSpec extends _BillingOrgSubscriptionSpec {\n    _builtin_original?: _BillingOrgSubscriptionSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingOrgSubscriptionSpecImpl  implements _BillingOrgSubscriptionSpec {\n    _builtin_original?: _BillingOrgSubscriptionSpec = undefined;\n    public billing_account_id: string ;\n    public dev_mode: boolean  | undefined ;\n    public subscription_id: string | null  | undefined ;\n    public usage_override: Array<BillingSubscriptionUsageOverrideItem> | null  | undefined ;\n    public feature_overrides: Array<string> | null  | undefined ;\n    public product_id: string  | undefined ;\n    public cancel_detail: BillingSubscriptionCancelDetail  | undefined ;\n    public license_id: string  | undefined ;\n    public license_constraints: Array<LicenseConstraint>  | undefined ;\n    public constraint_variables: { [key: string]: object | undefined; }  | undefined ;\n    constructor(base: _BillingOrgSubscriptionSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'billing_account_id') >= 0) {\n            this.billing_account_id = base.billing_account_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'dev_mode') >= 0) {\n            this.dev_mode = base.dev_mode;\n        }\n        if (Object.keys(base).findIndex(key => key === 'subscription_id') >= 0) {\n            this.subscription_id = base.subscription_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'usage_override') >= 0) {\n            if (base.usage_override) {\n                this.usage_override = base.usage_override.map((original) => newBillingSubscriptionUsageOverrideItemImpl(original));\n            } else {\n                this.usage_override = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'feature_overrides') >= 0) {\n            this.feature_overrides = base.feature_overrides;\n        }\n        if (Object.keys(base).findIndex(key => key === 'product_id') >= 0) {\n            this.product_id = base.product_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'cancel_detail') >= 0) {\n            this.cancel_detail = base.cancel_detail;\n        }\n        if (Object.keys(base).findIndex(key => key === 'license_id') >= 0) {\n            this.license_id = base.license_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'license_constraints') >= 0) {\n            if (base.license_constraints) {\n                this.license_constraints = base.license_constraints.map((original) => newLicenseConstraintImpl(original));\n            } else {\n                this.license_constraints = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'constraint_variables') >= 0) {\n            this.constraint_variables = base.constraint_variables;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.usage_override !== undefined) {\n            for (const item of this.usage_override) {\n                if (item !== undefined && (item as BillingSubscriptionUsageOverrideItemImpl)._remove_builtin_extensions !== undefined) {\n                    (item as BillingSubscriptionUsageOverrideItemImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.license_constraints !== undefined) {\n            for (const item of this.license_constraints) {\n                if (item !== undefined && (item as LicenseConstraintImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LicenseConstraintImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newBillingOrgSubscriptionSpecImpl(base: _BillingOrgSubscriptionSpec): BillingOrgSubscriptionSpecImpl {\n    return new BillingOrgSubscriptionSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _FeatureSpec, FeatureSpec, FeatureSpecImpl, newFeatureSpecImpl } from './featureSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _FeatureStatus, FeatureStatus, FeatureStatusImpl, newFeatureStatusImpl } from './featureStatus';\n\n\n/**\n * A product feature\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Feature { \n    metadata?: MetadataWithId;\n    spec: FeatureSpec;\n    status?: FeatureStatus;\n}\n\nexport interface Feature extends _Feature {\n    _builtin_original?: _Feature;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FeatureImpl  implements _Feature {\n    _builtin_original?: _Feature = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: FeatureSpec ;\n    public status: FeatureStatus  | undefined ;\n    constructor(base: _Feature) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFeatureImpl(base: _Feature): FeatureImpl {\n    return new FeatureImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _BillingSubscription, BillingSubscription, BillingSubscriptionImpl, newBillingSubscriptionImpl } from './billingSubscription';\nimport { _Organisation, Organisation, OrganisationImpl, newOrganisationImpl } from './organisation';\nimport { _BillingOrgSubscriptionBalance, BillingOrgSubscriptionBalance, BillingOrgSubscriptionBalanceImpl, newBillingOrgSubscriptionBalanceImpl } from './billingOrgSubscriptionBalance';\nimport { _BillingProviderSubscriptionStatus, BillingProviderSubscriptionStatus, BillingProviderSubscriptionStatusImpl, newBillingProviderSubscriptionStatusImpl } from './billingProviderSubscriptionStatus';\nimport { _License, License, LicenseImpl, newLicenseImpl } from './license';\nimport { _Product, Product, ProductImpl, newProductImpl } from './product';\nimport { _BillingProduct, BillingProduct, BillingProductImpl, newBillingProductImpl } from './billingProduct';\nimport { _Feature, Feature, FeatureImpl, newFeatureImpl } from './feature';\nimport { _UsageMetrics, UsageMetrics, UsageMetricsImpl, newUsageMetricsImpl } from './usageMetrics';\n\n\n/**\n * Object describing the status of a Billing Account Subscription\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingOrgSubscriptionStatus { \n    /**\n     * the list of organisations that are connected to this billing subscription \n     */\n    orgs?: Array<Organisation>;\n    subscription?: BillingSubscription;\n    balance?: BillingOrgSubscriptionBalance;\n    /**\n     * feature overrides specifically associated with this subscription\n     */\n    feature_overrides?: Array<Feature>;\n    usage_metrics?: UsageMetrics;\n    /**\n     * The provider products associated with this billing account. \n     */\n    products?: Array<BillingProduct>;\n    product?: Product;\n    provider_status?: BillingProviderSubscriptionStatus;\n    license?: License;\n}\n\nexport interface BillingOrgSubscriptionStatus extends _BillingOrgSubscriptionStatus {\n    _builtin_original?: _BillingOrgSubscriptionStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingOrgSubscriptionStatusImpl  implements _BillingOrgSubscriptionStatus {\n    _builtin_original?: _BillingOrgSubscriptionStatus = undefined;\n    public orgs: Array<Organisation>  | undefined ;\n    public subscription: BillingSubscription  | undefined ;\n    public balance: BillingOrgSubscriptionBalance  | undefined ;\n    public feature_overrides: Array<Feature>  | undefined ;\n    public usage_metrics: UsageMetrics  | undefined ;\n    public products: Array<BillingProduct>  | undefined ;\n    public product: Product  | undefined ;\n    public provider_status: BillingProviderSubscriptionStatus  | undefined ;\n    public license: License  | undefined ;\n    constructor(base: _BillingOrgSubscriptionStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'orgs') >= 0) {\n            if (base.orgs) {\n                this.orgs = base.orgs.map((original) => newOrganisationImpl(original));\n            } else {\n                this.orgs = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'subscription') >= 0) {\n            this.subscription = base.subscription;\n        }\n        if (Object.keys(base).findIndex(key => key === 'balance') >= 0) {\n            this.balance = base.balance;\n        }\n        if (Object.keys(base).findIndex(key => key === 'feature_overrides') >= 0) {\n            if (base.feature_overrides) {\n                this.feature_overrides = base.feature_overrides.map((original) => newFeatureImpl(original));\n            } else {\n                this.feature_overrides = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'usage_metrics') >= 0) {\n            this.usage_metrics = base.usage_metrics;\n        }\n        if (Object.keys(base).findIndex(key => key === 'products') >= 0) {\n            if (base.products) {\n                this.products = base.products.map((original) => newBillingProductImpl(original));\n            } else {\n                this.products = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'product') >= 0) {\n            this.product = base.product;\n        }\n        if (Object.keys(base).findIndex(key => key === 'provider_status') >= 0) {\n            this.provider_status = base.provider_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'license') >= 0) {\n            this.license = base.license;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.orgs !== undefined) {\n            for (const item of this.orgs) {\n                if (item !== undefined && (item as OrganisationImpl)._remove_builtin_extensions !== undefined) {\n                    (item as OrganisationImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.feature_overrides !== undefined) {\n            for (const item of this.feature_overrides) {\n                if (item !== undefined && (item as FeatureImpl)._remove_builtin_extensions !== undefined) {\n                    (item as FeatureImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.products !== undefined) {\n            for (const item of this.products) {\n                if (item !== undefined && (item as BillingProductImpl)._remove_builtin_extensions !== undefined) {\n                    (item as BillingProductImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newBillingOrgSubscriptionStatusImpl(base: _BillingOrgSubscriptionStatus): BillingOrgSubscriptionStatusImpl {\n    return new BillingOrgSubscriptionStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Represents a temporary, one-time-use link to the billing system\\'s self-serve portal. Creating a link object will provision a one-time-use link in the billing system so that a user may manage their contact info, subscriptions, billing info and so on. The link will expire after some period of time. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingPortalLink { \n    /**\n     * The page to return to after the user has finished their configuration. The self-serve portal will present this link to the user so that they may return when they have finished. This should be a fully-qualified domain. Typically you\\'ll place the URI of the page the user was at prior to navigating to `portal_uri`. \n     */\n    return_uri: string;\n    /**\n     * The URI to send the user to so that they may configure their billing account. This URI will eventually expire. This is a sensitive value: do not store it, or transmit it anywhere. \n     */\n    readonly portal_uri?: string;\n}\n\nexport interface BillingPortalLink extends _BillingPortalLink {\n    _builtin_original?: _BillingPortalLink;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingPortalLinkImpl  implements _BillingPortalLink {\n    _builtin_original?: _BillingPortalLink = undefined;\n    public return_uri: string ;\n    public readonly portal_uri: string  | undefined ;\n    constructor(base: _BillingPortalLink) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'return_uri') >= 0) {\n            this.return_uri = base.return_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'portal_uri') >= 0) {\n            this.portal_uri = base.portal_uri;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBillingPortalLinkImpl(base: _BillingPortalLink): BillingPortalLinkImpl {\n    return new BillingPortalLinkImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A specific price plan for a specific product\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingProductPrice { \n    /**\n     * the product price id\n     */\n    id?: string;\n}\n\nexport interface BillingProductPrice extends _BillingProductPrice {\n    _builtin_original?: _BillingProductPrice;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingProductPriceImpl  implements _BillingProductPrice {\n    _builtin_original?: _BillingProductPrice = undefined;\n    public id: string  | undefined ;\n    constructor(base: _BillingProductPrice) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBillingProductPriceImpl(base: _BillingProductPrice): BillingProductPriceImpl {\n    return new BillingProductPriceImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _BillingProductPrice, BillingProductPrice, BillingProductPriceImpl, newBillingProductPriceImpl } from './billingProductPrice';\n\n\n/**\n * Provides details of the backend provider subscription and interactions with Agilicus Product, including reconcile detail to determine differences between the subscription current prices and the configured product prices. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingProviderSubscriptionStatus { \n    /**\n     * This provides a simple boolean, which identifies if the product_id and its associated price_ids, are configured and used inside the backend provider subscription.  A value of True says they match, otherwise a value of False says they do not match. When false, the subscription_missing_prices and subscription_additional_prices can provide info as to which price ids are mismatched. \n     */\n    product_subscription_match?: boolean;\n    /**\n     * A list of billing product price ids that are present in the product, but are not in the current subscription. \n     */\n    subscription_missing_prices?: Array<BillingProductPrice>;\n    /**\n     * A list of billing product price ids that are not present in the product, but are in the current subscription. \n     */\n    subscription_additional_prices?: Array<BillingProductPrice>;\n}\n\nexport interface BillingProviderSubscriptionStatus extends _BillingProviderSubscriptionStatus {\n    _builtin_original?: _BillingProviderSubscriptionStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingProviderSubscriptionStatusImpl  implements _BillingProviderSubscriptionStatus {\n    _builtin_original?: _BillingProviderSubscriptionStatus = undefined;\n    public product_subscription_match: boolean  | undefined ;\n    public subscription_missing_prices: Array<BillingProductPrice>  | undefined ;\n    public subscription_additional_prices: Array<BillingProductPrice>  | undefined ;\n    constructor(base: _BillingProviderSubscriptionStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'product_subscription_match') >= 0) {\n            this.product_subscription_match = base.product_subscription_match;\n        }\n        if (Object.keys(base).findIndex(key => key === 'subscription_missing_prices') >= 0) {\n            if (base.subscription_missing_prices) {\n                this.subscription_missing_prices = base.subscription_missing_prices.map((original) => newBillingProductPriceImpl(original));\n            } else {\n                this.subscription_missing_prices = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'subscription_additional_prices') >= 0) {\n            if (base.subscription_additional_prices) {\n                this.subscription_additional_prices = base.subscription_additional_prices.map((original) => newBillingProductPriceImpl(original));\n            } else {\n                this.subscription_additional_prices = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.subscription_missing_prices !== undefined) {\n            for (const item of this.subscription_missing_prices) {\n                if (item !== undefined && (item as BillingProductPriceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as BillingProductPriceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.subscription_additional_prices !== undefined) {\n            for (const item of this.subscription_additional_prices) {\n                if (item !== undefined && (item as BillingProductPriceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as BillingProductPriceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newBillingProviderSubscriptionStatusImpl(base: _BillingProviderSubscriptionStatus): BillingProviderSubscriptionStatusImpl {\n    return new BillingProviderSubscriptionStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _BillingSubscription, BillingSubscription, BillingSubscriptionImpl, newBillingSubscriptionImpl } from './billingSubscription';\n\n\n/**\n * Object describing billing a billing subscription cancelation detail.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingSubscriptionCancelDetail { \n    /**\n     * The subscription associated with this organisation will cancelled at the subscription period end. This organisation and its suborgs will be disabled at approximately that time.  Only one of cancel_at_period_end, cancel_at or immediately can be utilized. \n     */\n    cancel_at_period_end?: boolean;\n    /**\n     * The subscription associated with this organisation will cancelled at the the specified date-time. This organisation and its suborgs will be disabled at approximately that time.  Only one of cancel_at_period_end, cancel_at or immediately can be utilized. \n     */\n    cancel_at?: Date;\n    /**\n     * The subscription associated with this organisation will cancelled immediately. This organisation and its suborgs will be disabled.  Only one of cancel_at_period_end, cancel_at or immediately can be utilized. \n     */\n    immediately?: boolean;\n    /**\n     * Additional comments about why the user canceled the subscription, if the subscription was canceled explicitly by the user. \n     */\n    comment?: string;\n    /**\n     * The customer submitted reason for why they canceled, if the subscription was canceled explicitly by the user. Possible values   - customer_service - Customer service was less than expected   - low_quality - Quality was less than expected   - missing_features - Some features are missing   - other - other reason   - switched_service - I’m switching to a different service   - too_complex - Ease of use was less than expected   - too_expensive - It’s too expensive   - unused - I don’t use the service enough \n     */\n    feedback?: string;\n    subscription?: BillingSubscription;\n}\n\nexport interface BillingSubscriptionCancelDetail extends _BillingSubscriptionCancelDetail {\n    _builtin_original?: _BillingSubscriptionCancelDetail;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingSubscriptionCancelDetailImpl  implements _BillingSubscriptionCancelDetail {\n    _builtin_original?: _BillingSubscriptionCancelDetail = undefined;\n    public cancel_at_period_end: boolean  | undefined ;\n    public cancel_at: Date  | undefined ;\n    public immediately: boolean  | undefined ;\n    public comment: string  | undefined ;\n    public feedback: string  | undefined ;\n    public subscription: BillingSubscription  | undefined ;\n    constructor(base: _BillingSubscriptionCancelDetail) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'cancel_at_period_end') >= 0) {\n            this.cancel_at_period_end = base.cancel_at_period_end;\n        }\n        if (Object.keys(base).findIndex(key => key === 'cancel_at') >= 0) {\n            this.cancel_at = base.cancel_at;\n        }\n        if (Object.keys(base).findIndex(key => key === 'immediately') >= 0) {\n            this.immediately = base.immediately;\n        }\n        if (Object.keys(base).findIndex(key => key === 'comment') >= 0) {\n            this.comment = base.comment;\n        }\n        if (Object.keys(base).findIndex(key => key === 'feedback') >= 0) {\n            this.feedback = base.feedback;\n        }\n        if (Object.keys(base).findIndex(key => key === 'subscription') >= 0) {\n            this.subscription = base.subscription;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBillingSubscriptionCancelDetailImpl(base: _BillingSubscriptionCancelDetail): BillingSubscriptionCancelDetailImpl {\n    return new BillingSubscriptionCancelDetailImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _BillingOrgSubscription, BillingOrgSubscription, BillingOrgSubscriptionImpl, newBillingOrgSubscriptionImpl } from './billingOrgSubscription';\n\n\n/**\n * Object for creating a new upstream subscription\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingSubscriptionNewSubscription { \n    /**\n     * subscription description\n     */\n    description?: string;\n    /**\n     * Product trial period (days) \n     */\n    trial_period?: number | null;\n    /**\n     * The currency to use for the subscription\n     */\n    currency?: string;\n    updated_subscription?: BillingOrgSubscription;\n}\n\nexport interface BillingSubscriptionNewSubscription extends _BillingSubscriptionNewSubscription {\n    _builtin_original?: _BillingSubscriptionNewSubscription;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingSubscriptionNewSubscriptionImpl  implements _BillingSubscriptionNewSubscription {\n    _builtin_original?: _BillingSubscriptionNewSubscription = undefined;\n    public description: string  | undefined ;\n    public trial_period: number | null  | undefined ;\n    public currency: string  | undefined ;\n    public updated_subscription: BillingOrgSubscription  | undefined ;\n    constructor(base: _BillingSubscriptionNewSubscription) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'trial_period') >= 0) {\n            this.trial_period = base.trial_period;\n        }\n        if (Object.keys(base).findIndex(key => key === 'currency') >= 0) {\n            this.currency = base.currency;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated_subscription') >= 0) {\n            this.updated_subscription = base.updated_subscription;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBillingSubscriptionNewSubscriptionImpl(base: _BillingSubscriptionNewSubscription): BillingSubscriptionNewSubscriptionImpl {\n    return new BillingSubscriptionNewSubscriptionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A billing usage record\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingUsageRecord { \n    /**\n     * When true, the actual usage record is not written to the backend billing database. This is useful to determine what the resulting record would be written as. \n     */\n    dry_run?: boolean;\n    /**\n     * Total usage quantity for the specified date.  This field is readOnly and is automatically determined by the backend server before applying. Its result is returned back in the response. \n     */\n    readonly quantity?: number;\n    /**\n     * The timestamp when this usage occurred.  This field is readOnly and is automatically determined by the backend server before applying. Its result is returned back in the response. \n     */\n    readonly timestamp?: number;\n}\n\nexport interface BillingUsageRecord extends _BillingUsageRecord {\n    _builtin_original?: _BillingUsageRecord;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingUsageRecordImpl  implements _BillingUsageRecord {\n    _builtin_original?: _BillingUsageRecord = undefined;\n    public dry_run: boolean  | undefined ;\n    public readonly quantity: number  | undefined ;\n    public readonly timestamp: number  | undefined ;\n    constructor(base: _BillingUsageRecord) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'dry_run') >= 0) {\n            this.dry_run = base.dry_run;\n        }\n        if (Object.keys(base).findIndex(key => key === 'quantity') >= 0) {\n            this.quantity = base.quantity;\n        }\n        if (Object.keys(base).findIndex(key => key === 'timestamp') >= 0) {\n            this.timestamp = base.timestamp;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBillingUsageRecordImpl(base: _BillingUsageRecord): BillingUsageRecordImpl {\n    return new BillingUsageRecordImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A billing usage summary\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BillingUsageSummary { \n    /**\n     * Total usage during the current period \n     */\n    total_usage?: number;\n}\n\nexport interface BillingUsageSummary extends _BillingUsageSummary {\n    _builtin_original?: _BillingUsageSummary;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BillingUsageSummaryImpl  implements _BillingUsageSummary {\n    _builtin_original?: _BillingUsageSummary = undefined;\n    public total_usage: number  | undefined ;\n    constructor(base: _BillingUsageSummary) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'total_usage') >= 0) {\n            this.total_usage = base.total_usage;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBillingUsageSummaryImpl(base: _BillingUsageSummary): BillingUsageSummaryImpl {\n    return new BillingUsageSummaryImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Requests deletion of many LabelledObjects. This is typically used to clean up when an object has been deleted. Note that it is not an error to delete nothing in response to this. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BulkDeleteLabelledObjectsRequest { \n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * The IDs of objects to clean up.\n     */\n    object_ids: Array<string>;\n}\n\nexport interface BulkDeleteLabelledObjectsRequest extends _BulkDeleteLabelledObjectsRequest {\n    _builtin_original?: _BulkDeleteLabelledObjectsRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BulkDeleteLabelledObjectsRequestImpl  implements _BulkDeleteLabelledObjectsRequest {\n    _builtin_original?: _BulkDeleteLabelledObjectsRequest = undefined;\n    public org_id: string ;\n    public object_ids: Array<string> ;\n    constructor(base: _BulkDeleteLabelledObjectsRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'object_ids') >= 0) {\n            this.object_ids = base.object_ids;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBulkDeleteLabelledObjectsRequestImpl(base: _BulkDeleteLabelledObjectsRequest): BulkDeleteLabelledObjectsRequestImpl {\n    return new BulkDeleteLabelledObjectsRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Contains information about the result of deleting LabelledObjects in bulk. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BulkDeleteLabelledObjectsResponse { \n    /**\n     * The number of objects which were deleted\n     */\n    number_objects_deleted: number;\n    /**\n     * The number of labels which were deleted because they were orphaned.\n     */\n    number_labels_deleted: number;\n}\n\nexport interface BulkDeleteLabelledObjectsResponse extends _BulkDeleteLabelledObjectsResponse {\n    _builtin_original?: _BulkDeleteLabelledObjectsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BulkDeleteLabelledObjectsResponseImpl  implements _BulkDeleteLabelledObjectsResponse {\n    _builtin_original?: _BulkDeleteLabelledObjectsResponse = undefined;\n    public number_objects_deleted: number ;\n    public number_labels_deleted: number ;\n    constructor(base: _BulkDeleteLabelledObjectsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'number_objects_deleted') >= 0) {\n            this.number_objects_deleted = base.number_objects_deleted;\n        }\n        if (Object.keys(base).findIndex(key => key === 'number_labels_deleted') >= 0) {\n            this.number_labels_deleted = base.number_labels_deleted;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBulkDeleteLabelledObjectsResponseImpl(base: _BulkDeleteLabelledObjectsResponse): BulkDeleteLabelledObjectsResponseImpl {\n    return new BulkDeleteLabelledObjectsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The response body of a bulk session operation\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BulkSessionOperationResponse { \n    /**\n     * The number of sessions modified\n     */\n    number_of_sessions_modified?: number;\n}\n\nexport interface BulkSessionOperationResponse extends _BulkSessionOperationResponse {\n    _builtin_original?: _BulkSessionOperationResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BulkSessionOperationResponseImpl  implements _BulkSessionOperationResponse {\n    _builtin_original?: _BulkSessionOperationResponse = undefined;\n    public number_of_sessions_modified: number  | undefined ;\n    constructor(base: _BulkSessionOperationResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'number_of_sessions_modified') >= 0) {\n            this.number_of_sessions_modified = base.number_of_sessions_modified;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBulkSessionOperationResponseImpl(base: _BulkSessionOperationResponse): BulkSessionOperationResponseImpl {\n    return new BulkSessionOperationResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * parameters used to constrain which tokens can be bulk revoked\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BulkTokenRevoke { \n    /**\n     * The unique id of the User from which to revoke tokens \n     */\n    user_id: string;\n    /**\n     * The unique id of the Organisation from which to revoke tokens \n     */\n    org_id?: string;\n    /**\n     * The unique id of the session from which to revoke tokens \n     */\n    session_id?: string;\n}\n\nexport interface BulkTokenRevoke extends _BulkTokenRevoke {\n    _builtin_original?: _BulkTokenRevoke;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BulkTokenRevokeImpl  implements _BulkTokenRevoke {\n    _builtin_original?: _BulkTokenRevoke = undefined;\n    public user_id: string ;\n    public org_id: string  | undefined ;\n    public session_id: string  | undefined ;\n    constructor(base: _BulkTokenRevoke) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session_id') >= 0) {\n            this.session_id = base.session_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBulkTokenRevokeImpl(base: _BulkTokenRevoke): BulkTokenRevokeImpl {\n    return new BulkTokenRevokeImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The response body of a bulk token revocation\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BulkTokenRevokeResponse { \n    /**\n     * The number of tokens that were revoked\n     */\n    number_of_tokens_revoked?: number;\n}\n\nexport interface BulkTokenRevokeResponse extends _BulkTokenRevokeResponse {\n    _builtin_original?: _BulkTokenRevokeResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BulkTokenRevokeResponseImpl  implements _BulkTokenRevokeResponse {\n    _builtin_original?: _BulkTokenRevokeResponse = undefined;\n    public number_of_tokens_revoked: number  | undefined ;\n    constructor(base: _BulkTokenRevokeResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'number_of_tokens_revoked') >= 0) {\n            this.number_of_tokens_revoked = base.number_of_tokens_revoked;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newBulkTokenRevokeResponseImpl(base: _BulkTokenRevokeResponse): BulkTokenRevokeResponseImpl {\n    return new BulkTokenRevokeResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The parameters for bulk setting metadata for a specific organisation and application. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BulkUserMetadata { \n    /**\n     * The unique id of the Organisation to which this record applies. \n     */\n    org_id: string | null;\n    /**\n     * The unique id of the application to which this record applies. \n     */\n    app_id?: string | null;\n    /**\n     * A descriptive name for this metadata entry\n     */\n    name?: string;\n    /**\n     * The type of data present in the configuration. This informs consumers of how to use the data present. The \\'json\\' type means no internal interpretation is done, it is a string-in/string-out. On query this can be deep-merged with member groups. \n     */\n    data_type: BulkUserMetadata.DataTypeEnum;\n    /**\n     * The string representation of the data. This value is interpretted differently based on the data_type\n     */\n    data: string;\n}\n\nexport interface BulkUserMetadata extends _BulkUserMetadata {\n    _builtin_original?: _BulkUserMetadata;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BulkUserMetadataImpl  implements _BulkUserMetadata {\n    _builtin_original?: _BulkUserMetadata = undefined;\n    public org_id: string | null ;\n    public app_id: string | null  | undefined ;\n    public name: string  | undefined ;\n    public data_type: BulkUserMetadata.DataTypeEnum ;\n    public data: string ;\n    constructor(base: _BulkUserMetadata) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'app_id') >= 0) {\n            this.app_id = base.app_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'data_type') >= 0) {\n            this.data_type = base.data_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'data') >= 0) {\n            this.data = base.data;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace BulkUserMetadata {\n    export type DataTypeEnum = 'mfa_enrollment_expiry' | 'user_app_data' | 'user_org_data' | 'json';\n    export const DataTypeEnum = {\n        mfa_enrollment_expiry: 'mfa_enrollment_expiry' as DataTypeEnum,\n        user_app_data: 'user_app_data' as DataTypeEnum,\n        user_org_data: 'user_org_data' as DataTypeEnum,\n        json: 'json' as DataTypeEnum\n    };\n}\n\n\nexport function newBulkUserMetadataImpl(base: _BulkUserMetadata): BulkUserMetadataImpl {\n    return new BulkUserMetadataImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserStatusEnum, UserStatusEnum, UserStatusEnumImpl, newUserStatusEnumImpl } from './userStatusEnum';\n\n\n/**\n * Updates the status of a user in response to a user request. Can also be used to reset te permissions of the user as part of approving a request so that only the permissions assigned as part of the request take effect.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserRequestUserUpdate { \n    /**\n     * The unique id of the organisation to which this record applies. \n     */\n    org_id: string;\n    /**\n     * The unique id of the User to which this record applies. \n     */\n    user_id: string;\n    new_status: UserStatusEnum;\n    /**\n     * Whether or not to reset the user\\'s permissions.\n     */\n    reset_permissions: boolean;\n}\n\nexport interface UserRequestUserUpdate extends _UserRequestUserUpdate {\n    _builtin_original?: _UserRequestUserUpdate;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserRequestUserUpdateImpl  implements _UserRequestUserUpdate {\n    _builtin_original?: _UserRequestUserUpdate = undefined;\n    public org_id: string ;\n    public user_id: string ;\n    public new_status: UserStatusEnum ;\n    public reset_permissions: boolean ;\n    constructor(base: _UserRequestUserUpdate) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'new_status') >= 0) {\n            this.new_status = base.new_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'reset_permissions') >= 0) {\n            this.reset_permissions = base.reset_permissions;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUserRequestUserUpdateImpl(base: _UserRequestUserUpdate): UserRequestUserUpdateImpl {\n    return new UserRequestUserUpdateImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserRequestUserUpdate, UserRequestUserUpdate, UserRequestUserUpdateImpl, newUserRequestUserUpdateImpl } from './userRequestUserUpdate';\nimport { _UserRequestInfo, UserRequestInfo, UserRequestInfoImpl, newUserRequestInfoImpl } from './userRequestInfo';\n\n\n/**\n * A BulkUserRequestApproval allows a client to approve (or decline) a number of user requests at once, as well as making minor changes to a user state. This method is more efficient than individually approving each UserRequest.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _BulkUserRequestApproval { \n    /**\n     * The unique id of the organisation to which the approvals will take effect. Any approvals in the list which do match this org id will be ignored. \n     */\n    org_id: string;\n    /**\n     * A list of users to update. Their org_id must match the org_id provided in this object. \n     */\n    user_updates: Array<UserRequestUserUpdate>;\n    /**\n     * A list of user requests to approve or decline. Whether or not they are approved or declined is controlled by setting their status in the individual UserRequestInfo. The actual properties of the request (e.g. assigned permission) may be modified this way as well. \n     */\n    user_requests: Array<UserRequestInfo>;\n}\n\nexport interface BulkUserRequestApproval extends _BulkUserRequestApproval {\n    _builtin_original?: _BulkUserRequestApproval;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class BulkUserRequestApprovalImpl  implements _BulkUserRequestApproval {\n    _builtin_original?: _BulkUserRequestApproval = undefined;\n    public org_id: string ;\n    public user_updates: Array<UserRequestUserUpdate> ;\n    public user_requests: Array<UserRequestInfo> ;\n    constructor(base: _BulkUserRequestApproval) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_updates') >= 0) {\n            if (base.user_updates) {\n                this.user_updates = base.user_updates.map((original) => newUserRequestUserUpdateImpl(original));\n            } else {\n                this.user_updates = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_requests') >= 0) {\n            if (base.user_requests) {\n                this.user_requests = base.user_requests.map((original) => newUserRequestInfoImpl(original));\n            } else {\n                this.user_requests = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.user_updates !== undefined) {\n            for (const item of this.user_updates) {\n                if (item !== undefined && (item as UserRequestUserUpdateImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserRequestUserUpdateImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.user_requests !== undefined) {\n            for (const item of this.user_requests) {\n                if (item !== undefined && (item as UserRequestInfoImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserRequestInfoImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newBulkUserRequestApprovalImpl(base: _BulkUserRequestApproval): BulkUserRequestApprovalImpl {\n    return new BulkUserRequestApprovalImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Describes an origin to allow for Cross-Origin Resource Sharing. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CORSOrigin { \n    /**\n     * An exact origin to match. Note that this includes the scheme as well as the host. Typically origins do not include the path. \n     */\n    exact?: string;\n}\n\nexport interface CORSOrigin extends _CORSOrigin {\n    _builtin_original?: _CORSOrigin;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CORSOriginImpl  implements _CORSOrigin {\n    _builtin_original?: _CORSOrigin = undefined;\n    public exact: string  | undefined ;\n    constructor(base: _CORSOrigin) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'exact') >= 0) {\n            this.exact = base.exact;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newCORSOriginImpl(base: _CORSOrigin): CORSOriginImpl {\n    return new CORSOriginImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _CORSOrigin, CORSOrigin, CORSOriginImpl, newCORSOriginImpl } from './cORSOrigin';\n\n\n/**\n * CORSSettings controls the Cross-Origin Resource Sharing (CORS) policy of an Application. This allows an application to control which origins may request content from it. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CORSSettings { \n    /**\n     * Whether or not to apply the CORS policy. If the policy is disabled, then any CORS headers applied by the application will be passed through unchanged. \n     */\n    enabled: boolean;\n    /**\n     * How the CORS settings are applied. - `overwrite`: CORS settings as configured overwrite any policy returned by the server.   This is the default behaviour. - `clear`: No CORS settings are applied. Any policy returned by the server is cleared out. \n     */\n    mode?: string;\n    /**\n     * How to match the origin. Note that in all cases the \\'allow_origins\\' list will be consulted.  - `me`: match the hosts on which this application can be reached.  - `wildcard`: match any host.  - `list`: match only those hosts provided in the `allow_origins` list. \n     */\n    origin_matching: CORSSettings.OriginMatchingEnum;\n    /**\n     * When true, an Applications that have multiple ApplicationServices assigned to them will be allowed access according to the hostname configured for that service. See expose_as_hostnames in ApplicationService. When true, this setting will work in addition to the origin_matching configuration. \n     */\n    allow_resource_origins?: boolean;\n    /**\n     * Lists the origins allowed to access the resources of this application. Any matching origin will have its value echoed back in the `Access-Control-Allow-Origin` header. \n     */\n    allow_origins: Array<CORSOrigin>;\n    /**\n     * The methods for which to allow access to resources. These correspond to the `Access-Control-Allow-Methods` header, into which they are joined by commas. If this value is null, then the methods are wildcarded. Set a value to \\'*\\' to wildcard. \n     */\n    allow_methods: Array<string>;\n    /**\n     * The headers which may be sent in a request to resources from this application. These correspond to the `Access-Control-Allow-Headers` header, into which they are joined by commas. If this value is null, then the headers are wildcarded. Set a value to \\'*\\' to wildcard. \n     */\n    allow_headers: Array<string>;\n    /**\n     * The response headers which the javascript running in the browser may access for resources from this application. These correspond to the `Access-Control-Expose-Headers` header, into which they are joined by commas. If this value is null, then the headers are wildcarded. Set a value to \\'*\\' to wildcard. \n     */\n    expose_headers: Array<string>;\n    /**\n     * This sets the `Access-Control-Max-Age` which controls the maximum number of seconds for which the results of the CORS preflight check may be cached. -1 disables caching. \n     */\n    max_age_seconds: number;\n    /**\n     * Whether credentials may be sent in requests. This corresponds to the `Access-Control-Allow-Credentials` header. \n     */\n    allow_credentials: boolean;\n}\n\nexport interface CORSSettings extends _CORSSettings {\n    _builtin_original?: _CORSSettings;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CORSSettingsImpl  implements _CORSSettings {\n    _builtin_original?: _CORSSettings = undefined;\n    public enabled: boolean ;\n    public mode: string  | undefined ;\n    public origin_matching: CORSSettings.OriginMatchingEnum ;\n    public allow_resource_origins: boolean  | undefined ;\n    public allow_origins: Array<CORSOrigin> ;\n    public allow_methods: Array<string> ;\n    public allow_headers: Array<string> ;\n    public expose_headers: Array<string> ;\n    public max_age_seconds: number ;\n    public allow_credentials: boolean ;\n    constructor(base: _CORSSettings) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mode') >= 0) {\n            this.mode = base.mode;\n        }\n        if (Object.keys(base).findIndex(key => key === 'origin_matching') >= 0) {\n            this.origin_matching = base.origin_matching;\n        }\n        if (Object.keys(base).findIndex(key => key === 'allow_resource_origins') >= 0) {\n            this.allow_resource_origins = base.allow_resource_origins;\n        }\n        if (Object.keys(base).findIndex(key => key === 'allow_origins') >= 0) {\n            if (base.allow_origins) {\n                this.allow_origins = base.allow_origins.map((original) => newCORSOriginImpl(original));\n            } else {\n                this.allow_origins = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'allow_methods') >= 0) {\n            this.allow_methods = base.allow_methods;\n        }\n        if (Object.keys(base).findIndex(key => key === 'allow_headers') >= 0) {\n            this.allow_headers = base.allow_headers;\n        }\n        if (Object.keys(base).findIndex(key => key === 'expose_headers') >= 0) {\n            this.expose_headers = base.expose_headers;\n        }\n        if (Object.keys(base).findIndex(key => key === 'max_age_seconds') >= 0) {\n            this.max_age_seconds = base.max_age_seconds;\n        }\n        if (Object.keys(base).findIndex(key => key === 'allow_credentials') >= 0) {\n            this.allow_credentials = base.allow_credentials;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.allow_origins !== undefined) {\n            for (const item of this.allow_origins) {\n                if (item !== undefined && (item as CORSOriginImpl)._remove_builtin_extensions !== undefined) {\n                    (item as CORSOriginImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace CORSSettings {\n    export type OriginMatchingEnum = 'me' | 'wildcard' | 'list';\n    export const OriginMatchingEnum = {\n        me: 'me' as OriginMatchingEnum,\n        wildcard: 'wildcard' as OriginMatchingEnum,\n        list: 'list' as OriginMatchingEnum\n    };\n}\n\n\nexport function newCORSSettingsImpl(base: _CORSSettings): CORSSettingsImpl {\n    return new CORSSettingsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A CSPDirective forms the core of a Content Security Policy (CSP). The policy is a series of directives which each control different aspects of how an Application accesses content. The `name` field defines the meaning of the directive; it is interpreted by the browser according to the browser\\'s implementation of CSP. The list of values describes the behaviour of the particular directive. When rendered into the `Content-Security-Policy` header, the directive will take the form: `{name} {values[0]} {values[1]} ... {values[n]}`. That is, it starts with the `name`, followed by the list of values joined by spaces.  See https://www.w3.org/TR/CSP2/ for the details of the CSP standard. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CSPDirective { \n    /**\n     * The directive controlling the CSP. This value has meaning according to the CSP standard and the browser\\'s implementation of it. \n     */\n    name: string;\n    /**\n     * The values describing the behaviour of the directive. This array may be empty. Note that whether or not the directive is surrounded by single quotes (\\\"\\'\\\") is important to the meaning of the policy. For example, `\\'self\\'` has special meaning, whereas `self` will likely be considered as a URI. \n     */\n    values: Array<string>;\n}\n\nexport interface CSPDirective extends _CSPDirective {\n    _builtin_original?: _CSPDirective;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CSPDirectiveImpl  implements _CSPDirective {\n    _builtin_original?: _CSPDirective = undefined;\n    public name: string ;\n    public values: Array<string> ;\n    constructor(base: _CSPDirective) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'values') >= 0) {\n            this.values = base.values;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newCSPDirectiveImpl(base: _CSPDirective): CSPDirectiveImpl {\n    return new CSPDirectiveImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _CSPDirective, CSPDirective, CSPDirectiveImpl, newCSPDirectiveImpl } from './cSPDirective';\n\n\n/**\n * The definition of an Application\\'s Content Security Policy (CSP). Configure CSP by adding directives, each of which control one piece of the policy. The system combines the directions into the single CSP header: `Content-Security-Policy` \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CSPSettings { \n    /**\n     * Whether or not to apply CSP. If disabled, the system will not set the Content-Security-Policy header; any CSP headers added by the application will be passed through unchanged. \n     */\n    enabled: boolean;\n    /**\n     * Mode configures how the content security policy is enforced, if at all. Its possible values mean the following:   - enforce: Actively enforce the policy. Requests which fail the policy will be blocked.     If a report uri is configured for the policy, reports will be sent to it.   - reportonly: Any requests failing the policy generate reports. They are not blocked.   - disabled: the policy is disabled. Requests which would normally fail are neither blocked     nor reported on. \n     */\n    mode: CSPSettings.ModeEnum;\n    /**\n     * The directives which make up the policy. The system merges each directive into a single header by separating them with the `;` character. Duplicate directives will be merged with later directives in the array being appended to earlier ones. \n     */\n    directives: Array<CSPDirective>;\n}\n\nexport interface CSPSettings extends _CSPSettings {\n    _builtin_original?: _CSPSettings;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CSPSettingsImpl  implements _CSPSettings {\n    _builtin_original?: _CSPSettings = undefined;\n    public enabled: boolean ;\n    public mode: CSPSettings.ModeEnum ;\n    public directives: Array<CSPDirective> ;\n    constructor(base: _CSPSettings) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mode') >= 0) {\n            this.mode = base.mode;\n        }\n        if (Object.keys(base).findIndex(key => key === 'directives') >= 0) {\n            if (base.directives) {\n                this.directives = base.directives.map((original) => newCSPDirectiveImpl(original));\n            } else {\n                this.directives = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.directives !== undefined) {\n            for (const item of this.directives) {\n                if (item !== undefined && (item as CSPDirectiveImpl)._remove_builtin_extensions !== undefined) {\n                    (item as CSPDirectiveImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace CSPSettings {\n    export type ModeEnum = 'enforce' | 'reportonly' | 'disabled';\n    export const ModeEnum = {\n        enforce: 'enforce' as ModeEnum,\n        reportonly: 'reportonly' as ModeEnum,\n        disabled: 'disabled' as ModeEnum\n    };\n}\n\n\nexport function newCSPSettingsImpl(base: _CSPSettings): CSPSettingsImpl {\n    return new CSPSettingsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A certificate Signing Request (CSR) reason status.  pending: The certificate signing is in progress failed: The certificate failed to be issued. issued: The signed certificate has been successfully issued \n */\nexport type _CSRReasonEnum = 'pending' | 'failed' | 'issued';\nexport type CSRReasonEnum = _CSRReasonEnum\n\nexport type CSRReasonEnumImpl = CSRReasonEnum;\nexport const CSRReasonEnum = {\n    pending: 'pending' as CSRReasonEnum,\n    failed: 'failed' as CSRReasonEnum,\n    issued: 'issued' as CSRReasonEnum\n};\n\nexport function newCSRReasonEnumImpl(base: _CSRReasonEnum): CSRReasonEnumImpl {\n    return base;\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An entry in the catalogue. The entries in the catalogue should relate to their catalogues type.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CatalogueEntry { \n    /**\n     * Unique identifier\n     */\n    readonly id?: string;\n    /**\n     * Unique identifier\n     */\n    readonly catalogue_id?: string;\n    /**\n     * The category of catalogue that this entry is apart of\n     */\n    readonly catalogue_category?: string;\n    /**\n     * The name of the catalogue entry in a user friendly form\n     */\n    name: string;\n    /**\n     * The content of the catalogue\n     */\n    content?: string;\n    /**\n     * A qualifier for the catalogue entry. Used for differentiating between entries of the same name\n     */\n    tag?: string;\n    /**\n     * A short description of the catalogue entry.\n     */\n    short_description?: string;\n    /**\n     * A detailed description of the catalogue entry\n     */\n    long_description?: string;\n    /**\n     * Creation time\n     */\n    readonly created?: Date;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n}\n\nexport interface CatalogueEntry extends _CatalogueEntry {\n    _builtin_original?: _CatalogueEntry;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CatalogueEntryImpl  implements _CatalogueEntry {\n    _builtin_original?: _CatalogueEntry = undefined;\n    public readonly id: string  | undefined ;\n    public readonly catalogue_id: string  | undefined ;\n    public readonly catalogue_category: string  | undefined ;\n    public name: string ;\n    public content: string  | undefined ;\n    public tag: string  | undefined ;\n    public short_description: string  | undefined ;\n    public long_description: string  | undefined ;\n    public readonly created: Date  | undefined ;\n    public readonly updated: Date  | undefined ;\n    constructor(base: _CatalogueEntry) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'catalogue_id') >= 0) {\n            this.catalogue_id = base.catalogue_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'catalogue_category') >= 0) {\n            this.catalogue_category = base.catalogue_category;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'content') >= 0) {\n            this.content = base.content;\n        }\n        if (Object.keys(base).findIndex(key => key === 'tag') >= 0) {\n            this.tag = base.tag;\n        }\n        if (Object.keys(base).findIndex(key => key === 'short_description') >= 0) {\n            this.short_description = base.short_description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'long_description') >= 0) {\n            this.long_description = base.long_description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'created') >= 0) {\n            this.created = base.created;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newCatalogueEntryImpl(base: _CatalogueEntry): CatalogueEntryImpl {\n    return new CatalogueEntryImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _CatalogueEntry, CatalogueEntry, CatalogueEntryImpl, newCatalogueEntryImpl } from './catalogueEntry';\n\n\n/**\n * A generic collection of catalogue entries. Entries belonging to the same category should be found in the same catelogue.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Catalogue { \n    /**\n     * Unique identifier\n     */\n    readonly id?: string;\n    /**\n     * The category of catalogue that this catalogue belongs to.\n     */\n    category?: string;\n    /**\n     * The list of catalogue entries for the catalogue\n     */\n    readonly catalogue_entries?: Array<CatalogueEntry>;\n    /**\n     * Creation time\n     */\n    readonly created?: Date;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n}\n\nexport interface Catalogue extends _Catalogue {\n    _builtin_original?: _Catalogue;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CatalogueImpl  implements _Catalogue {\n    _builtin_original?: _Catalogue = undefined;\n    public readonly id: string  | undefined ;\n    public category: string  | undefined ;\n    public readonly catalogue_entries: Array<CatalogueEntry>  | undefined ;\n    public readonly created: Date  | undefined ;\n    public readonly updated: Date  | undefined ;\n    constructor(base: _Catalogue) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'category') >= 0) {\n            this.category = base.category;\n        }\n        if (Object.keys(base).findIndex(key => key === 'catalogue_entries') >= 0) {\n            if (base.catalogue_entries) {\n                this.catalogue_entries = base.catalogue_entries.map((original) => newCatalogueEntryImpl(original));\n            } else {\n                this.catalogue_entries = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'created') >= 0) {\n            this.created = base.created;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.catalogue_entries !== undefined) {\n            for (const item of this.catalogue_entries) {\n                if (item !== undefined && (item as CatalogueEntryImpl)._remove_builtin_extensions !== undefined) {\n                    (item as CatalogueEntryImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newCatalogueImpl(base: _Catalogue): CatalogueImpl {\n    return new CatalogueImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _CertSigningReqStatus, CertSigningReqStatus, CertSigningReqStatusImpl, newCertSigningReqStatusImpl } from './certSigningReqStatus';\nimport { _CertSigningReqSpec, CertSigningReqSpec, CertSigningReqSpecImpl, newCertSigningReqSpecImpl } from './certSigningReqSpec';\n\n\n/**\n * A Certificate Signing Request (CSR).  The Certificate Signing Request workflow: a. User creates a private key and creates and signs    a CSR as a PEM encoded request. Encoded within    the CSR is the Common Name and DNS names    (Subject Alternate Name). b. User will POST this req to the API using this CertSignReq,    using spec.request field. c. System will determine if the request is authorized based    on the clients credentials and if the user is authorized to    issue certificates for the domain(s). d. System will validate that no other certificate exists for    the requested domain(s) based on the signature of the    request.    If a user does a POST again to make an identical    request for the same domain(s) and request,    the POST will respond with a 409,    with a message of resulting domain(s) that are duplicated. e. The system goes through its process to sign the CSR by an    issuer.  Once the issuer has signed    the certificate, the certificate will be updated in the    CertSigningReqCertificateStatus field. f. The client will then read the status field of CertSigningReq    and can download and use the certificate.  Updating and Adding Domains to a Certificate: Should a user wish to add a domain to a certificate, they have two choices,     Update an existing CertSignReq, updating the request with    the added domain. This would invove a PUT to the API    with the updated spec.request field, and then following the approach    above.     or     Create a new CertSignReq via POST for a new certificate for    the requested domain(s).  Certificate Renewal: Certificates are automatically renewed unless specifically disabled using CertSigningReq.spec.auto_renew. When the system renews a certificate, it will update the CertSigningReqCertificateStatus with a new certificate added to the array.  The user may decide to not renew a certificate in which case no action by the system will be taken.  Certificate Removal and Key Rotation: Should new keys be created by the user, the user can PUT a new request to the CertSignReq. This will result in a forced renewal of the certificate and subsequently a newly issued certificate. All existing certificates in the CSR will be removed since they no longer pertain to the new request. Note that there are rate limits on renewals of certificates with identical domain names.  Key Rotation via API: The CertSignReq has a spec.rotate_keys option that allows the backend to signal to a user/client to rotate their keys. This allows a user via an API to remove and update private keys.  Deletion: The CertSignReq can be deleted with valid authorization credentials, although is not typically required. Normally this would be done by an administrator in order for force removal of a CSR. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CertSigningReq { \n    metadata?: MetadataWithId;\n    spec: CertSigningReqSpec;\n    status?: CertSigningReqStatus;\n}\n\nexport interface CertSigningReq extends _CertSigningReq {\n    _builtin_original?: _CertSigningReq;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CertSigningReqImpl  implements _CertSigningReq {\n    _builtin_original?: _CertSigningReq = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: CertSigningReqSpec ;\n    public status: CertSigningReqStatus  | undefined ;\n    constructor(base: _CertSigningReq) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newCertSigningReqImpl(base: _CertSigningReq): CertSigningReqImpl {\n    return new CertSigningReqImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _CertSigningReqReissueStatus, CertSigningReqReissueStatus, CertSigningReqReissueStatusImpl, newCertSigningReqReissueStatusImpl } from './certSigningReqReissueStatus';\nimport { _CertSigningReqReissueSpec, CertSigningReqReissueSpec, CertSigningReqReissueSpecImpl, newCertSigningReqReissueSpecImpl } from './certSigningReqReissueSpec';\n\n\n/**\n * A request to reissue a certificate for a CSR\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CertSigningReqReissue { \n    spec: CertSigningReqReissueSpec;\n    status?: CertSigningReqReissueStatus;\n}\n\nexport interface CertSigningReqReissue extends _CertSigningReqReissue {\n    _builtin_original?: _CertSigningReqReissue;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CertSigningReqReissueImpl  implements _CertSigningReqReissue {\n    _builtin_original?: _CertSigningReqReissue = undefined;\n    public spec: CertSigningReqReissueSpec ;\n    public status: CertSigningReqReissueStatus  | undefined ;\n    constructor(base: _CertSigningReqReissue) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newCertSigningReqReissueImpl(base: _CertSigningReqReissue): CertSigningReqReissueImpl {\n    return new CertSigningReqReissueImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A request to reissue a certificate. For CSRs which support manual recreation of a certificate, this will force them to kickstart a process whereby a new certificate is created. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CertSigningReqReissueSpec { \n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * The CertSigningReq id to reissue.\n     */\n    csr_id: string;\n    /**\n     * The not_after_time of the last available certificate. Updating this value to a time later than the currently set value will generate a new certificate. By using the not after time of the previously generated certificate, multiple consumers of certificates can coordinate without racing to generate extraneous certificates. \n     */\n    old_not_after: Date;\n}\n\nexport interface CertSigningReqReissueSpec extends _CertSigningReqReissueSpec {\n    _builtin_original?: _CertSigningReqReissueSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CertSigningReqReissueSpecImpl  implements _CertSigningReqReissueSpec {\n    _builtin_original?: _CertSigningReqReissueSpec = undefined;\n    public org_id: string ;\n    public csr_id: string ;\n    public old_not_after: Date ;\n    constructor(base: _CertSigningReqReissueSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'csr_id') >= 0) {\n            this.csr_id = base.csr_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'old_not_after') >= 0) {\n            this.old_not_after = base.old_not_after;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newCertSigningReqReissueSpecImpl(base: _CertSigningReqReissueSpec): CertSigningReqReissueSpecImpl {\n    return new CertSigningReqReissueSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _X509Certificate, X509Certificate, X509CertificateImpl, newX509CertificateImpl } from './x509Certificate';\n\n\n/**\n * Information about a request to reissue a certificate. The request may not immediately build a certificate, but if it does, it will be returned in the new_certificate propery. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CertSigningReqReissueStatus { \n    new_certificate?: X509Certificate;\n}\n\nexport interface CertSigningReqReissueStatus extends _CertSigningReqReissueStatus {\n    _builtin_original?: _CertSigningReqReissueStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CertSigningReqReissueStatusImpl  implements _CertSigningReqReissueStatus {\n    _builtin_original?: _CertSigningReqReissueStatus = undefined;\n    public new_certificate: X509Certificate  | undefined ;\n    constructor(base: _CertSigningReqReissueStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'new_certificate') >= 0) {\n            this.new_certificate = base.new_certificate;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newCertSigningReqReissueStatusImpl(base: _CertSigningReqReissueStatus): CertSigningReqReissueStatusImpl {\n    return new CertSigningReqReissueStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The specification for the CertSigningReq\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CertSigningReqSpec { \n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * When enabled (true), system will automatically renew the certificate using the provided request CSR.  The resulting certificate will be updated in CertSigningReqCertificateStatus. \n     */\n    auto_renew?: boolean;\n    /**\n     * Provided as a mechansim to notify a user/client to rotate their keys. A client would retrieve this and the client would then issue a new request. A subsequent PUT with a new request will reset this property to false. This may be true whereby a user has decided to update all keys, and this facility could be made available via the administration portal. \n     */\n    rotate_keys?: boolean;\n    /**\n     * The associated private key id that created the CSR request.  A private key id is defined as the md5 sum of private keys\\' public key. \n     */\n    private_key_id?: string;\n    /**\n     * The certificate signing request (CSR) formatted as PEM. \n     */\n    request: string;\n    /**\n     * The name of the issuing certificate authority. This value chooses which certificate authority approves the CSR and issues the certificate. Choose this value carefully, as the chosen issuer affects which chain of trust will be used to validate the certificate.  If this value is not provided, it defaults to `agilicus-public-acme`.  Options:   - `agilicus-public-acme`: The certificate is requested from a public certificate authority   using the ACME protocol. Most devices will trust this certificate automatically.   - `agilicus-private`: The certificate is requested from Agilicus\\'s private certificate   authority. Devices will need to download an appropriate root certificate in order to   trust servers presenting this one. \n     */\n    target_issuer?: string;\n    /**\n     * An optional, unique identifying id (UID), that could associate this CSR to an external CSR object (for example, kubernetes UID) \n     */\n    uid?: string;\n}\n\nexport interface CertSigningReqSpec extends _CertSigningReqSpec {\n    _builtin_original?: _CertSigningReqSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CertSigningReqSpecImpl  implements _CertSigningReqSpec {\n    _builtin_original?: _CertSigningReqSpec = undefined;\n    public org_id: string ;\n    public auto_renew: boolean  | undefined ;\n    public rotate_keys: boolean  | undefined ;\n    public private_key_id: string  | undefined ;\n    public request: string ;\n    public target_issuer: string  | undefined ;\n    public uid: string  | undefined ;\n    constructor(base: _CertSigningReqSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'auto_renew') >= 0) {\n            this.auto_renew = base.auto_renew;\n        }\n        if (Object.keys(base).findIndex(key => key === 'rotate_keys') >= 0) {\n            this.rotate_keys = base.rotate_keys;\n        }\n        if (Object.keys(base).findIndex(key => key === 'private_key_id') >= 0) {\n            this.private_key_id = base.private_key_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'request') >= 0) {\n            this.request = base.request;\n        }\n        if (Object.keys(base).findIndex(key => key === 'target_issuer') >= 0) {\n            this.target_issuer = base.target_issuer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'uid') >= 0) {\n            this.uid = base.uid;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newCertSigningReqSpecImpl(base: _CertSigningReqSpec): CertSigningReqSpecImpl {\n    return new CertSigningReqSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _X509CertificateStatus, X509CertificateStatus, X509CertificateStatusImpl, newX509CertificateStatusImpl } from './x509CertificateStatus';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _X509CertificateSpec, X509CertificateSpec, X509CertificateSpecImpl, newX509CertificateSpecImpl } from './x509CertificateSpec';\n\n\n/**\n * A x509 Certificate\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _X509Certificate { \n    metadata?: MetadataWithId;\n    spec: X509CertificateSpec;\n    status?: X509CertificateStatus;\n}\n\nexport interface X509Certificate extends _X509Certificate {\n    _builtin_original?: _X509Certificate;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class X509CertificateImpl  implements _X509Certificate {\n    _builtin_original?: _X509Certificate = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: X509CertificateSpec ;\n    public status: X509CertificateStatus  | undefined ;\n    constructor(base: _X509Certificate) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newX509CertificateImpl(base: _X509Certificate): X509CertificateImpl {\n    return new X509CertificateImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _X509Certificate, X509Certificate, X509CertificateImpl, newX509CertificateImpl } from './x509Certificate';\n\n\n/**\n * The status for a CertSigningReq\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CertSigningReqStatus { \n    /**\n     * The issued x509 certificates, formatted as PEM. This list is sorted by X509Certificate.not_before. \n     */\n    certificates?: Array<X509Certificate>;\n    /**\n     * The certificate common name (CN) \n     */\n    readonly common_name?: string;\n    /**\n     * The list of domains of which the CSR is requesting to be issued to.\n     */\n    readonly dns_names?: Array<string>;\n    /**\n     * Unique identifier\n     */\n    connector_id?: string;\n    /**\n     * The overall auto_renew status, which is a combination of the configured auto_renew status based on the CertSigningReqSpec, and the overall status of the agent connector (if applicable). \n     */\n    auto_renew?: boolean;\n    /**\n     * Certificate messages from cert manager related to progress or any failures that may have occured. These updates will be automatically removed by system as they will age out. This property is updated for queries that have set \\'get_certificate_updates\\' boolean to true.  This list is ordered with the first entry being the most recent update.  Any entries in this list will expire in 7 days.  The most recent 100 entries (maximum) will be returned (if available). Query parameters certificate_updates_start_cursor and certificate_updates_end_cursor can specify the range of updates to return in the query. \n     */\n    certificate_updates?: Array<X509Certificate>;\n}\n\nexport interface CertSigningReqStatus extends _CertSigningReqStatus {\n    _builtin_original?: _CertSigningReqStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CertSigningReqStatusImpl  implements _CertSigningReqStatus {\n    _builtin_original?: _CertSigningReqStatus = undefined;\n    public certificates: Array<X509Certificate>  | undefined ;\n    public readonly common_name: string  | undefined ;\n    public readonly dns_names: Array<string>  | undefined ;\n    public connector_id: string  | undefined ;\n    public auto_renew: boolean  | undefined ;\n    public certificate_updates: Array<X509Certificate>  | undefined ;\n    constructor(base: _CertSigningReqStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'certificates') >= 0) {\n            if (base.certificates) {\n                this.certificates = base.certificates.map((original) => newX509CertificateImpl(original));\n            } else {\n                this.certificates = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'common_name') >= 0) {\n            this.common_name = base.common_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'dns_names') >= 0) {\n            this.dns_names = base.dns_names;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_id') >= 0) {\n            this.connector_id = base.connector_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'auto_renew') >= 0) {\n            this.auto_renew = base.auto_renew;\n        }\n        if (Object.keys(base).findIndex(key => key === 'certificate_updates') >= 0) {\n            if (base.certificate_updates) {\n                this.certificate_updates = base.certificate_updates.map((original) => newX509CertificateImpl(original));\n            } else {\n                this.certificate_updates = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.certificates !== undefined) {\n            for (const item of this.certificates) {\n                if (item !== undefined && (item as X509CertificateImpl)._remove_builtin_extensions !== undefined) {\n                    (item as X509CertificateImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.certificate_updates !== undefined) {\n            for (const item of this.certificate_updates) {\n                if (item !== undefined && (item as X509CertificateImpl)._remove_builtin_extensions !== undefined) {\n                    (item as X509CertificateImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newCertSigningReqStatusImpl(base: _CertSigningReqStatus): CertSigningReqStatusImpl {\n    return new CertSigningReqStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorLocalBind, AgentConnectorLocalBind, AgentConnectorLocalBindImpl, newAgentConnectorLocalBindImpl } from './agentConnectorLocalBind';\n\n\n/**\n * The Certificate Revocation Proxy allows proxying CRL/OCSP revocation requests. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CertificateRevocationProxy { \n    /**\n     * A list describing the local proxy binds for certificate revocation requests. \n     */\n    local_binds: Array<AgentConnectorLocalBind>;\n    /**\n     * Unique identifier\n     */\n    trusted_cert_bundle?: string;\n    /**\n     * Unique identifier\n     */\n    rules_bundle?: string;\n}\n\nexport interface CertificateRevocationProxy extends _CertificateRevocationProxy {\n    _builtin_original?: _CertificateRevocationProxy;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CertificateRevocationProxyImpl  implements _CertificateRevocationProxy {\n    _builtin_original?: _CertificateRevocationProxy = undefined;\n    public local_binds: Array<AgentConnectorLocalBind> ;\n    public trusted_cert_bundle: string  | undefined ;\n    public rules_bundle: string  | undefined ;\n    constructor(base: _CertificateRevocationProxy) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'local_binds') >= 0) {\n            if (base.local_binds) {\n                this.local_binds = base.local_binds.map((original) => newAgentConnectorLocalBindImpl(original));\n            } else {\n                this.local_binds = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'trusted_cert_bundle') >= 0) {\n            this.trusted_cert_bundle = base.trusted_cert_bundle;\n        }\n        if (Object.keys(base).findIndex(key => key === 'rules_bundle') >= 0) {\n            this.rules_bundle = base.rules_bundle;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.local_binds !== undefined) {\n            for (const item of this.local_binds) {\n                if (item !== undefined && (item as AgentConnectorLocalBindImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AgentConnectorLocalBindImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newCertificateRevocationProxyImpl(base: _CertificateRevocationProxy): CertificateRevocationProxyImpl {\n    return new CertificateRevocationProxyImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _CertificateTrackerStatus, CertificateTrackerStatus, CertificateTrackerStatusImpl, newCertificateTrackerStatusImpl } from './certificateTrackerStatus';\nimport { _CertificateTrackerSpec, CertificateTrackerSpec, CertificateTrackerSpecImpl, newCertificateTrackerSpecImpl } from './certificateTrackerSpec';\n\n\n/**\n * CertificateTracker represents a desired state for a certificate, with a set of requested domains, and would contain X509Certificate(s). \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CertificateTracker { \n    metadata?: MetadataWithId;\n    spec: CertificateTrackerSpec;\n    status?: CertificateTrackerStatus;\n}\n\nexport interface CertificateTracker extends _CertificateTracker {\n    _builtin_original?: _CertificateTracker;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CertificateTrackerImpl  implements _CertificateTracker {\n    _builtin_original?: _CertificateTracker = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: CertificateTrackerSpec ;\n    public status: CertificateTrackerStatus  | undefined ;\n    constructor(base: _CertificateTracker) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newCertificateTrackerImpl(base: _CertificateTracker): CertificateTrackerImpl {\n    return new CertificateTrackerImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The config for a CertificateTracker \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CertificateTrackerConfig { \n    /**\n     * The list of domains of which the CSR is requesting to be issued to.\n     */\n    dns_names: Array<string>;\n    /**\n     * The unique label used to identfy the purpose of this CertificateTracker. \n     */\n    label?: string;\n}\n\nexport interface CertificateTrackerConfig extends _CertificateTrackerConfig {\n    _builtin_original?: _CertificateTrackerConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CertificateTrackerConfigImpl  implements _CertificateTrackerConfig {\n    _builtin_original?: _CertificateTrackerConfig = undefined;\n    public dns_names: Array<string> ;\n    public label: string  | undefined ;\n    constructor(base: _CertificateTrackerConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'dns_names') >= 0) {\n            this.dns_names = base.dns_names;\n        }\n        if (Object.keys(base).findIndex(key => key === 'label') >= 0) {\n            this.label = base.label;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newCertificateTrackerConfigImpl(base: _CertificateTrackerConfig): CertificateTrackerConfigImpl {\n    return new CertificateTrackerConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _CertificateTrackerConfig, CertificateTrackerConfig, CertificateTrackerConfigImpl, newCertificateTrackerConfigImpl } from './certificateTrackerConfig';\n\n\n/**\n * The spec for a CertificateTracker \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CertificateTrackerSpec { \n    /**\n     * The organisation to which the CertificateTracker is associated with. \n     */\n    org_id: string;\n    config: CertificateTrackerConfig;\n    /**\n     * An optional, unique identifying id (UID), that could associate this CertificateTracker to an external Certificate (for example, kubernetes UID) \n     */\n    uid?: string;\n    /**\n     * Sets the maximum number of certificates that will be maintained, before auto-deleting them. \n     */\n    max_certificate_history?: number;\n}\n\nexport interface CertificateTrackerSpec extends _CertificateTrackerSpec {\n    _builtin_original?: _CertificateTrackerSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CertificateTrackerSpecImpl  implements _CertificateTrackerSpec {\n    _builtin_original?: _CertificateTrackerSpec = undefined;\n    public org_id: string ;\n    public config: CertificateTrackerConfig ;\n    public uid: string  | undefined ;\n    public max_certificate_history: number  | undefined ;\n    constructor(base: _CertificateTrackerSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'config') >= 0) {\n            this.config = base.config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'uid') >= 0) {\n            this.uid = base.uid;\n        }\n        if (Object.keys(base).findIndex(key => key === 'max_certificate_history') >= 0) {\n            this.max_certificate_history = base.max_certificate_history;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newCertificateTrackerSpecImpl(base: _CertificateTrackerSpec): CertificateTrackerSpecImpl {\n    return new CertificateTrackerSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _X509Certificate, X509Certificate, X509CertificateImpl, newX509CertificateImpl } from './x509Certificate';\n\n\n/**\n * The status for a CertificateTracker \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CertificateTrackerStatus { \n    /**\n     * The issued x509 certificates, formatted as PEM. This list is sorted by X509Certificate.not_before. \n     */\n    certificates?: Array<X509Certificate>;\n}\n\nexport interface CertificateTrackerStatus extends _CertificateTrackerStatus {\n    _builtin_original?: _CertificateTrackerStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CertificateTrackerStatusImpl  implements _CertificateTrackerStatus {\n    _builtin_original?: _CertificateTrackerStatus = undefined;\n    public certificates: Array<X509Certificate>  | undefined ;\n    constructor(base: _CertificateTrackerStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'certificates') >= 0) {\n            if (base.certificates) {\n                this.certificates = base.certificates.map((original) => newX509CertificateImpl(original));\n            } else {\n                this.certificates = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.certificates !== undefined) {\n            for (const item of this.certificates) {\n                if (item !== undefined && (item as X509CertificateImpl)._remove_builtin_extensions !== undefined) {\n                    (item as X509CertificateImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newCertificateTrackerStatusImpl(base: _CertificateTrackerStatus): CertificateTrackerStatusImpl {\n    return new CertificateTrackerStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Controls the Expect-CT header for certificate transparency.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CertificateTransparencySettings { \n    /**\n     * Whether to apply the Certificate Transparency Settings. If false, no settings will be applied. Settings applied by the application itself will take effect. \n     */\n    enabled: boolean;\n    /**\n     * The uri where the browser will report failures. Setting this to `null` or `\\\"\\\"` will prevent reports. \n     */\n    report_uri?: string | null;\n    /**\n     * Whether or not certificate transparency failures cause the browser to take action. \n     */\n    enforce: boolean;\n    /**\n     * The number of seconds for which to remember that the Application expects certificate transparency. \n     */\n    max_age_seconds: number;\n}\n\nexport interface CertificateTransparencySettings extends _CertificateTransparencySettings {\n    _builtin_original?: _CertificateTransparencySettings;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CertificateTransparencySettingsImpl  implements _CertificateTransparencySettings {\n    _builtin_original?: _CertificateTransparencySettings = undefined;\n    public enabled: boolean ;\n    public report_uri: string | null  | undefined ;\n    public enforce: boolean ;\n    public max_age_seconds: number ;\n    constructor(base: _CertificateTransparencySettings) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'report_uri') >= 0) {\n            this.report_uri = base.report_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'enforce') >= 0) {\n            this.enforce = base.enforce;\n        }\n        if (Object.keys(base).findIndex(key => key === 'max_age_seconds') >= 0) {\n            this.max_age_seconds = base.max_age_seconds;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newCertificateTransparencySettingsImpl(base: _CertificateTransparencySettings): CertificateTransparencySettingsImpl {\n    return new CertificateTransparencySettingsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _ChallengeSpec, ChallengeSpec, ChallengeSpecImpl, newChallengeSpecImpl } from './challengeSpec';\nimport { _ChallengeStatus, ChallengeStatus, ChallengeStatusImpl, newChallengeStatusImpl } from './challengeStatus';\n\n\n/**\n * An authentication challenge. These are short lived resources which track the state of a authentication challenge in the system. They are created when a challenge response workflow starts, and persist for some time after the response completes. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Challenge { \n    metadata?: MetadataWithId;\n    spec: ChallengeSpec;\n    status?: ChallengeStatus;\n}\n\nexport interface Challenge extends _Challenge {\n    _builtin_original?: _Challenge;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ChallengeImpl  implements _Challenge {\n    _builtin_original?: _Challenge = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: ChallengeSpec ;\n    public status: ChallengeStatus  | undefined ;\n    constructor(base: _Challenge) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newChallengeImpl(base: _Challenge): ChallengeImpl {\n    return new ChallengeImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An http action to be taken upon completion of a challenge by the actor associated with the provided answer. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HTTPChallengeAction { \n    /**\n     * The descriminator for a ChallengeAction. set to \\\"http_action\\\"\n     */\n    challenge_action_type: string;\n    /**\n     * The method to use for the request\n     */\n    method: string;\n    /**\n     * The concent to use for the request if needed\n     */\n    body?: string;\n    /**\n     * The content-type of the body\n     */\n    content_type?: string;\n    /**\n     * The URI of the request\n     */\n    uri: string;\n    /**\n     * The scopes to request in the access token used for the request. If this array is empty, then no access token is requested. \n     */\n    scopes?: Array<string>;\n}\n\nexport interface HTTPChallengeAction extends _HTTPChallengeAction {\n    _builtin_original?: _HTTPChallengeAction;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HTTPChallengeActionImpl  implements _HTTPChallengeAction {\n    _builtin_original?: _HTTPChallengeAction = undefined;\n    public challenge_action_type: string ;\n    public method: string ;\n    public body: string  | undefined ;\n    public content_type: string  | undefined ;\n    public uri: string ;\n    public scopes: Array<string>  | undefined ;\n    constructor(base: _HTTPChallengeAction) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'challenge_action_type') >= 0) {\n            this.challenge_action_type = base.challenge_action_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'method') >= 0) {\n            this.method = base.method;\n        }\n        if (Object.keys(base).findIndex(key => key === 'body') >= 0) {\n            this.body = base.body;\n        }\n        if (Object.keys(base).findIndex(key => key === 'content_type') >= 0) {\n            this.content_type = base.content_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'uri') >= 0) {\n            this.uri = base.uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'scopes') >= 0) {\n            this.scopes = base.scopes;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newHTTPChallengeActionImpl(base: _HTTPChallengeAction): HTTPChallengeActionImpl {\n    return new HTTPChallengeActionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _HTTPChallengeAction, HTTPChallengeAction, HTTPChallengeActionImpl, newHTTPChallengeActionImpl } from './hTTPChallengeAction';\n\n\n/**\n * @type ChallengeAction\n * @export\n */\nexport type ChallengeAction = HTTPChallengeAction;\nexport type ChallengeActionImpl = HTTPChallengeActionImpl;\nexport type _ChallengeAction = _HTTPChallengeAction;\n\nexport function newChallengeActionImpl(base :_ChallengeAction): _ChallengeAction {\n    if (instanceOfHTTPChallengeAction(base)) {\n        return newHTTPChallengeActionImpl(base);\n    }\n\n    // Worse case return it without the builtin copies. The various bits of code handle\n    // it missing.\n    return base;\n}\n\nexport function instanceOfHTTPChallengeAction(object: any): object is HTTPChallengeAction {\n    return object.challenge_action_type === \"http_action\";\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Specifies a user who can approve a challenge. An action approved by this actor will be done using credentials associated with the given user_id and org_id. Note that if the user does not have permission to take the action, the action will fail. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ChallengeActor { \n    /**\n     * Unique identifier\n     */\n    user_id: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n}\n\nexport interface ChallengeActor extends _ChallengeActor {\n    _builtin_original?: _ChallengeActor;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ChallengeActorImpl  implements _ChallengeActor {\n    _builtin_original?: _ChallengeActor = undefined;\n    public user_id: string ;\n    public org_id: string ;\n    constructor(base: _ChallengeActor) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newChallengeActorImpl(base: _ChallengeActor): ChallengeActorImpl {\n    return new ChallengeActorImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ChallengeAnswerSpec, ChallengeAnswerSpec, ChallengeAnswerSpecImpl, newChallengeAnswerSpecImpl } from './challengeAnswerSpec';\n\n\n/**\n * An answer to a challenge. The meaning of the answer may vary based on the type of challenge issued. The user who was issued the challenge should response to the answer by posting an answer with proof of their ownership of the second factor to the answers endpoint of the Challenge. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ChallengeAnswer { \n    spec: ChallengeAnswerSpec;\n}\n\nexport interface ChallengeAnswer extends _ChallengeAnswer {\n    _builtin_original?: _ChallengeAnswer;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ChallengeAnswerImpl  implements _ChallengeAnswer {\n    _builtin_original?: _ChallengeAnswer = undefined;\n    public spec: ChallengeAnswerSpec ;\n    constructor(base: _ChallengeAnswer) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newChallengeAnswerImpl(base: _ChallengeAnswer): ChallengeAnswerImpl {\n    return new ChallengeAnswerImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The contents of the challenge answer. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ChallengeAnswerSpec { \n    /**\n     * An opaque string used to answer the challenge.\n     */\n    answer: string;\n    /**\n     * The id of the challenge being answered. This is not required. It is present for consistency. \n     */\n    challenge_id?: string;\n    /**\n     * An object containing an arbitrary set of data for this challenge. This is useful for when you want to convey information over the challenge in a one-time use fashion. E.g. perhaps you have a secret and some extra information about it. They can be packaged up in this. Note that it is unstructured so that it can be used for any usecase, as long as the two sides of the challenge agree on the format. \n     */\n    answer_data?: object;\n}\n\nexport interface ChallengeAnswerSpec extends _ChallengeAnswerSpec {\n    _builtin_original?: _ChallengeAnswerSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ChallengeAnswerSpecImpl  implements _ChallengeAnswerSpec {\n    _builtin_original?: _ChallengeAnswerSpec = undefined;\n    public answer: string ;\n    public challenge_id: string  | undefined ;\n    public answer_data: object  | undefined ;\n    constructor(base: _ChallengeAnswerSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'answer') >= 0) {\n            this.answer = base.answer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'challenge_id') >= 0) {\n            this.challenge_id = base.challenge_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'answer_data') >= 0) {\n            this.answer_data = base.answer_data;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newChallengeAnswerSpecImpl(base: _ChallengeAnswerSpec): ChallengeAnswerSpecImpl {\n    return new ChallengeAnswerSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A challenge endpoint contains a type and an endpoint id corresponding to the type provided\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ChallengeEndpoint { \n    /**\n     * The endpoint id. This corresponds to a configuration for the given type.\n     */\n    endpoint?: string;\n    /**\n     * The type of challenge to issue. This controls how the user is informed of the challenge, as well as how the challenge can be satisfied. The follow types are supported:   - sms:  a `sms` challenge informs the user via text message of the challenge. The challenge can     be answered via the link provided in the text message. The user can deny the challenge via this     mechanism as well.   - web_push: a `web_push` challenge informs the user of the challenge on every device they have   registered via the web push (rfc8030) mechanism. If the user accepts via the link provided in   the web push, the challenge will be satisfied. The user can deny the challenge via this   mechanism as well.   - totp: a time-based one-time password challenge allows the user to enter the code from their registered   - webauthn: a challenge issued for a specific device the user has possession of. Either a yubikey, or a phone that has a Trusted Platform Module.   device and application.   - one_time_use_action: a challenge whose acceptance or rejection takes an action on behalf of a user. Typically this is used   when wanting to respond to events through a messaging platform.   - code: a one time use challenge which may be redeemed through a code. This code is typically shared to the user who copies it from one machine   to another. This is a variation of web_push where, instead of sending the code via webpush, the caller runs their own protocol to communicate it.   The same answer mechanism (a link) is used. enum: [sms, web_push, totp, webauthn, one_time_use_action, code] example: web_push \n     */\n    type?: string;\n}\n\nexport interface ChallengeEndpoint extends _ChallengeEndpoint {\n    _builtin_original?: _ChallengeEndpoint;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ChallengeEndpointImpl  implements _ChallengeEndpoint {\n    _builtin_original?: _ChallengeEndpoint = undefined;\n    public endpoint: string  | undefined ;\n    public type: string  | undefined ;\n    constructor(base: _ChallengeEndpoint) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'endpoint') >= 0) {\n            this.endpoint = base.endpoint;\n        }\n        if (Object.keys(base).findIndex(key => key === 'type') >= 0) {\n            this.type = base.type;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newChallengeEndpointImpl(base: _ChallengeEndpoint): ChallengeEndpointImpl {\n    return new ChallengeEndpointImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ChallengeEndpoint, ChallengeEndpoint, ChallengeEndpointImpl, newChallengeEndpointImpl } from './challengeEndpoint';\n\n\n/**\n * The specification of an authentication challenge. Contains fields which control how the challenge is made. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ChallengeSpec { \n    /**\n     * The type of challenge to issue. This controls how the user is informed of the challenge, as well as how the challenge can be satisfied. The follow types are supported:   - sms:  a `sms` challenge informs the user via text message of the challenge. The challenge can     be answered via the link provided in the text message. The user can deny the challenge via this     mechanism as well.   - web_push: a `web_push` challenge informs the user of the challenge on every device they have   registered via the web push (rfc8030) mechanism. If the user accepts via the link provided in   the web push, the challenge will be satisfied. The user can deny the challenge via this   mechanism as well.   - totp: a time-based one-time password challenge allows the user to enter the code from their registered   - webauthn: a challenge issued for a specific device the user has possession of. Either a yubikey, or a phone that has a Trusted Platform Module.   device and application.   - one_time_use_action: a challenge whose acceptance or rejection takes an action on behalf of a user. Typically this is used   when wanting to respond to events through a messaging platform.   - code: a one time use challenge which may be redeemed through a code. This code is typically shared to the user who copies it from one machine   to another. This is a variation of web_push where, instead of sending the code via webpush, the caller runs their own protocol to communicate it.   The same answer mechanism (a link) is used. enum: [sms, web_push, totp, webauthn, one_time_use_action, code] example: web_push \n     */\n    challenge_type?: string;\n    /**\n     * List of acceptable challenge types for this challenge request. The subsequent challenge answer must be one of these types.\n     */\n    challenge_types?: Array<string>;\n    /**\n     * Unique identifier\n     */\n    readonly user_id: string;\n    /**\n     * Whether to send the challenge now. If the challenge hasn\\'t yet been set, setting this to true will send the challenge. If the challenge has been sent, changing this has no effect. \n     */\n    send_now?: boolean;\n    /**\n     * For how long the system will accept answers for the challenge. After this time, if the challenge is not in the `challenge_passed` state, it will transition into the `timed_out` state. \n     */\n    timeout_seconds?: number;\n    /**\n     * The base URI which the user should retrieve in order to answer the challenge. It is expected that this will be an HTTP endpoint serving `text/html` content. The final URI that the user should retrieve will be this value, extended with three form parameters that may be used to invoke the `answer` endpoint.   - challenge_answer: A string which is the answer code.   - challenge_uid: the id of the user being challenged.   - challenge_id: the id of the challenge. In the example, this would turn into something like: `https://auth.egov.city/mfa-answer?challenge_answer=supersecret&challenge_uid=1234&challenge_id=5678` \n     */\n    response_uri?: string;\n    /**\n     * The origin that is initiating the challenge.\n     */\n    origin?: string;\n    /**\n     * List of endpoint ids to challenge for this challenge request. At least one entry is required here when the challenge type includes webauthn.\n     */\n    challenge_endpoints?: Array<ChallengeEndpoint>;\n    /**\n     * An object containing an arbitrary set of data for this challenge. This value will be provided as-is when the challenge is answered. This is useful for when you want to convey information over the challenge in a one-time use fashion. E.g. perhaps you have a secret and some extra information about it. They can be packaged up in this. Note that it is unstructured so that it can be used for any usecase, as long as the two sides of the challenge agree on the format.  Note that it this data will not be present in the response: it is write only. This is so that it may be used as a secret which may only be claimed by the providing challenge answer. \n     */\n    answer_data?: object;\n}\n\nexport interface ChallengeSpec extends _ChallengeSpec {\n    _builtin_original?: _ChallengeSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ChallengeSpecImpl  implements _ChallengeSpec {\n    _builtin_original?: _ChallengeSpec = undefined;\n    public challenge_type: string  | undefined ;\n    public challenge_types: Array<string>  | undefined ;\n    public readonly user_id: string ;\n    public send_now: boolean  | undefined ;\n    public timeout_seconds: number  | undefined ;\n    public response_uri: string  | undefined ;\n    public origin: string  | undefined ;\n    public challenge_endpoints: Array<ChallengeEndpoint>  | undefined ;\n    public answer_data: object  | undefined ;\n    constructor(base: _ChallengeSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'challenge_type') >= 0) {\n            this.challenge_type = base.challenge_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'challenge_types') >= 0) {\n            this.challenge_types = base.challenge_types;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'send_now') >= 0) {\n            this.send_now = base.send_now;\n        }\n        if (Object.keys(base).findIndex(key => key === 'timeout_seconds') >= 0) {\n            this.timeout_seconds = base.timeout_seconds;\n        }\n        if (Object.keys(base).findIndex(key => key === 'response_uri') >= 0) {\n            this.response_uri = base.response_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'origin') >= 0) {\n            this.origin = base.origin;\n        }\n        if (Object.keys(base).findIndex(key => key === 'challenge_endpoints') >= 0) {\n            if (base.challenge_endpoints) {\n                this.challenge_endpoints = base.challenge_endpoints.map((original) => newChallengeEndpointImpl(original));\n            } else {\n                this.challenge_endpoints = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'answer_data') >= 0) {\n            this.answer_data = base.answer_data;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.challenge_endpoints !== undefined) {\n            for (const item of this.challenge_endpoints) {\n                if (item !== undefined && (item as ChallengeEndpointImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ChallengeEndpointImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newChallengeSpecImpl(base: _ChallengeSpec): ChallengeSpecImpl {\n    return new ChallengeSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The status of an authentication challenge. This will provide information about its state, statistics and so on. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ChallengeStatus { \n    /**\n     * The current state of the challenge. The challenge may be in the following states:   - pending: waiting to issue the challenge.   - challenge_failed: the system failed to issue the challenge. This could be because there is     no mechanism to do so, communication with the device failed, and so on.   - issued: the challenge has been issued. The system is waiting for a response.   - challenge_passed: the user passed the challenge, typically by accepting a notification.   - challenge_declined: the user declined to accept the challenge. The challenge is no longer valid.   - timed_out: the challenge has timed out. The user can no longer use an answer to it to prove their     possession of a second factor. \n     */\n    state?: ChallengeStatus.StateEnum;\n    /**\n     * An opaque string used as the public challenge. Currently this is only used when the challenge type is webauthn.\n     */\n    public_challenge?: string;\n    /**\n     * The code to use to answer the challenge when the challenge type is `code`. This is only available when the challenge is first created. \n     */\n    code?: string;\n    /**\n     * The time at which the challenge was answered.\n     */\n    answered_at?: Date;\n}\n\nexport interface ChallengeStatus extends _ChallengeStatus {\n    _builtin_original?: _ChallengeStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ChallengeStatusImpl  implements _ChallengeStatus {\n    _builtin_original?: _ChallengeStatus = undefined;\n    public state: ChallengeStatus.StateEnum  | undefined ;\n    public public_challenge: string  | undefined ;\n    public code: string  | undefined ;\n    public answered_at: Date  | undefined ;\n    constructor(base: _ChallengeStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'state') >= 0) {\n            this.state = base.state;\n        }\n        if (Object.keys(base).findIndex(key => key === 'public_challenge') >= 0) {\n            this.public_challenge = base.public_challenge;\n        }\n        if (Object.keys(base).findIndex(key => key === 'code') >= 0) {\n            this.code = base.code;\n        }\n        if (Object.keys(base).findIndex(key => key === 'answered_at') >= 0) {\n            this.answered_at = base.answered_at;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace ChallengeStatus {\n    export type StateEnum = 'pending' | 'issued' | 'challenge_failed' | 'challenge_passed' | 'challenge_declined' | 'timed_out';\n    export const StateEnum = {\n        pending: 'pending' as StateEnum,\n        issued: 'issued' as StateEnum,\n        challenge_failed: 'challenge_failed' as StateEnum,\n        challenge_passed: 'challenge_passed' as StateEnum,\n        challenge_declined: 'challenge_declined' as StateEnum,\n        timed_out: 'timed_out' as StateEnum\n    };\n}\n\n\nexport function newChallengeStatusImpl(base: _ChallengeStatus): ChallengeStatusImpl {\n    return new ChallengeStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * cipher Diffie Hellman group\n */\nexport type _CipherDiffieHellmanGroup = 'ecp256' | 'ecp384' | 'ecp512';\nexport type CipherDiffieHellmanGroup = _CipherDiffieHellmanGroup\n\nexport type CipherDiffieHellmanGroupImpl = CipherDiffieHellmanGroup;\nexport const CipherDiffieHellmanGroup = {\n    ecp256: 'ecp256' as CipherDiffieHellmanGroup,\n    ecp384: 'ecp384' as CipherDiffieHellmanGroup,\n    ecp512: 'ecp512' as CipherDiffieHellmanGroup\n};\n\nexport function newCipherDiffieHellmanGroupImpl(base: _CipherDiffieHellmanGroup): CipherDiffieHellmanGroupImpl {\n    return base;\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * cipher encryption algorithm\n */\nexport type _CipherEncryptionAlgorithm = 'aes128' | 'aes256';\nexport type CipherEncryptionAlgorithm = _CipherEncryptionAlgorithm\n\nexport type CipherEncryptionAlgorithmImpl = CipherEncryptionAlgorithm;\nexport const CipherEncryptionAlgorithm = {\n    aes128: 'aes128' as CipherEncryptionAlgorithm,\n    aes256: 'aes256' as CipherEncryptionAlgorithm\n};\n\nexport function newCipherEncryptionAlgorithmImpl(base: _CipherEncryptionAlgorithm): CipherEncryptionAlgorithmImpl {\n    return base;\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * cipher integrity algorithm\n */\nexport type _CipherIntegrityAlgorithm = 'sha256' | 'sha384' | 'sha512';\nexport type CipherIntegrityAlgorithm = _CipherIntegrityAlgorithm\n\nexport type CipherIntegrityAlgorithmImpl = CipherIntegrityAlgorithm;\nexport const CipherIntegrityAlgorithm = {\n    sha256: 'sha256' as CipherIntegrityAlgorithm,\n    sha384: 'sha384' as CipherIntegrityAlgorithm,\n    sha512: 'sha512' as CipherIntegrityAlgorithm\n};\n\nexport function newCipherIntegrityAlgorithmImpl(base: _CipherIntegrityAlgorithm): CipherIntegrityAlgorithmImpl {\n    return base;\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Requests that a set of associations be cleared. Every affected File will be marked as pending_delete if it has no remaining associations after clearing.  The request will search for all associations with the provided parameters, deleting them. `object_id` restricts the search to only those associations linked to the object_id. `org_id` restricts the search to only those associations owned by org_id.  Note that any deleted files will continue to exist: both the API object and the storage. However, a garbage collection task may choose to remove the storage at some point.  If object_id is undefined, then all associations for an organisation will be cleaned. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ClearFileAssociationRequest { \n    /**\n     * Unique identifier\n     */\n    object_id?: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n}\n\nexport interface ClearFileAssociationRequest extends _ClearFileAssociationRequest {\n    _builtin_original?: _ClearFileAssociationRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ClearFileAssociationRequestImpl  implements _ClearFileAssociationRequest {\n    _builtin_original?: _ClearFileAssociationRequest = undefined;\n    public object_id: string  | undefined ;\n    public org_id: string ;\n    constructor(base: _ClearFileAssociationRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'object_id') >= 0) {\n            this.object_id = base.object_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newClearFileAssociationRequestImpl(base: _ClearFileAssociationRequest): ClearFileAssociationRequestImpl {\n    return new ClearFileAssociationRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _FileAssociationSpec, FileAssociationSpec, FileAssociationSpecImpl, newFileAssociationSpecImpl } from './fileAssociationSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _FileAssociationStatus, FileAssociationStatus, FileAssociationStatusImpl, newFileAssociationStatusImpl } from './fileAssociationStatus';\n\n\n/**\n * Associates a file with another object such as a Resource. This can be used to track how a file is used, as well as whether it is used at all. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FileAssociation { \n    metadata?: MetadataWithId;\n    spec: FileAssociationSpec;\n    status?: FileAssociationStatus;\n}\n\nexport interface FileAssociation extends _FileAssociation {\n    _builtin_original?: _FileAssociation;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FileAssociationImpl  implements _FileAssociation {\n    _builtin_original?: _FileAssociation = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: FileAssociationSpec ;\n    public status: FileAssociationStatus  | undefined ;\n    constructor(base: _FileAssociation) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFileAssociationImpl(base: _FileAssociation): FileAssociationImpl {\n    return new FileAssociationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _FileVisibility, FileVisibility, FileVisibilityImpl, newFileVisibilityImpl } from './fileVisibility';\n\n\n/**\n * Summary of file properties\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FileSummary { \n    /**\n     * Unique identifier\n     */\n    readonly id?: string;\n    /**\n     * Name of file\n     */\n    name?: string;\n    /**\n     * A file tag\n     */\n    tag?: string;\n    /**\n     * A file label\n     */\n    label?: string;\n    /**\n     * Size in bytes of the file\n     */\n    readonly size?: number;\n    visibility?: FileVisibility;\n    /**\n     * The location of the file on the internet. If present, this file can be downloaded by requesting this URI. If the file is publically visible, then no credentials need be provided. \n     */\n    readonly public_url?: string;\n    /**\n     * Where the file is stored in the backend storage.\n     */\n    readonly storage_path?: string;\n    /**\n     * Time object was last accessed\n     */\n    readonly last_accessed?: Date;\n    /**\n     * Creation time\n     */\n    readonly created?: Date;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n    /**\n     * True if this File has ever been associated with another object. This value remains true even after the association is removed so that garbage collection tasks can know whether to process it. \n     */\n    readonly has_been_associated?: boolean;\n}\n\nexport interface FileSummary extends _FileSummary {\n    _builtin_original?: _FileSummary;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FileSummaryImpl  implements _FileSummary {\n    _builtin_original?: _FileSummary = undefined;\n    public readonly id: string  | undefined ;\n    public name: string  | undefined ;\n    public tag: string  | undefined ;\n    public label: string  | undefined ;\n    public readonly size: number  | undefined ;\n    public visibility: FileVisibility  | undefined ;\n    public readonly public_url: string  | undefined ;\n    public readonly storage_path: string  | undefined ;\n    public readonly last_accessed: Date  | undefined ;\n    public readonly created: Date  | undefined ;\n    public readonly updated: Date  | undefined ;\n    public readonly has_been_associated: boolean  | undefined ;\n    constructor(base: _FileSummary) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'tag') >= 0) {\n            this.tag = base.tag;\n        }\n        if (Object.keys(base).findIndex(key => key === 'label') >= 0) {\n            this.label = base.label;\n        }\n        if (Object.keys(base).findIndex(key => key === 'size') >= 0) {\n            this.size = base.size;\n        }\n        if (Object.keys(base).findIndex(key => key === 'visibility') >= 0) {\n            this.visibility = base.visibility;\n        }\n        if (Object.keys(base).findIndex(key => key === 'public_url') >= 0) {\n            this.public_url = base.public_url;\n        }\n        if (Object.keys(base).findIndex(key => key === 'storage_path') >= 0) {\n            this.storage_path = base.storage_path;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_accessed') >= 0) {\n            this.last_accessed = base.last_accessed;\n        }\n        if (Object.keys(base).findIndex(key => key === 'created') >= 0) {\n            this.created = base.created;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n        if (Object.keys(base).findIndex(key => key === 'has_been_associated') >= 0) {\n            this.has_been_associated = base.has_been_associated;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFileSummaryImpl(base: _FileSummary): FileSummaryImpl {\n    return new FileSummaryImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _FileAssociation, FileAssociation, FileAssociationImpl, newFileAssociationImpl } from './fileAssociation';\nimport { _FileSummary, FileSummary, FileSummaryImpl, newFileSummaryImpl } from './fileSummary';\n\n\n/**\n * Describes the result of clearing a set of associations. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ClearFileAssociationResponse { \n    /**\n     * The assocatiations which were deleted. \n     */\n    deleted_associations: Array<FileAssociation>;\n    /**\n     * The files which were marked as pending_delete in response to having all of their associations deleted. \n     */\n    pending_delete_files: Array<FileSummary>;\n}\n\nexport interface ClearFileAssociationResponse extends _ClearFileAssociationResponse {\n    _builtin_original?: _ClearFileAssociationResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ClearFileAssociationResponseImpl  implements _ClearFileAssociationResponse {\n    _builtin_original?: _ClearFileAssociationResponse = undefined;\n    public deleted_associations: Array<FileAssociation> ;\n    public pending_delete_files: Array<FileSummary> ;\n    constructor(base: _ClearFileAssociationResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'deleted_associations') >= 0) {\n            if (base.deleted_associations) {\n                this.deleted_associations = base.deleted_associations.map((original) => newFileAssociationImpl(original));\n            } else {\n                this.deleted_associations = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'pending_delete_files') >= 0) {\n            if (base.pending_delete_files) {\n                this.pending_delete_files = base.pending_delete_files.map((original) => newFileSummaryImpl(original));\n            } else {\n                this.pending_delete_files = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.deleted_associations !== undefined) {\n            for (const item of this.deleted_associations) {\n                if (item !== undefined && (item as FileAssociationImpl)._remove_builtin_extensions !== undefined) {\n                    (item as FileAssociationImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.pending_delete_files !== undefined) {\n            for (const item of this.pending_delete_files) {\n                if (item !== undefined && (item as FileSummaryImpl)._remove_builtin_extensions !== undefined) {\n                    (item as FileSummaryImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newClearFileAssociationResponseImpl(base: _ClearFileAssociationResponse): ClearFileAssociationResponseImpl {\n    return new ClearFileAssociationResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LoginInjection, LoginInjection, LoginInjectionImpl, newLoginInjectionImpl } from './loginInjection';\n\n\n/**\n * Configuration specific to injected client javascript. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ClientInjection { \n    /**\n     * if client injection is enabled\n     */\n    enabled?: boolean;\n    /**\n     * The version of the injection script. When omitted, the latest version will be used.\n     */\n    version?: string | null;\n    login_config?: LoginInjection;\n    /**\n     * Enable debug mode of javascript \n     */\n    debug?: boolean;\n}\n\nexport interface ClientInjection extends _ClientInjection {\n    _builtin_original?: _ClientInjection;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ClientInjectionImpl  implements _ClientInjection {\n    _builtin_original?: _ClientInjection = undefined;\n    public enabled: boolean  | undefined ;\n    public version: string | null  | undefined ;\n    public login_config: LoginInjection  | undefined ;\n    public debug: boolean  | undefined ;\n    constructor(base: _ClientInjection) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'version') >= 0) {\n            this.version = base.version;\n        }\n        if (Object.keys(base).findIndex(key => key === 'login_config') >= 0) {\n            this.login_config = base.login_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'debug') >= 0) {\n            this.debug = base.debug;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newClientInjectionImpl(base: _ClientInjection): ClientInjectionImpl {\n    return new ClientInjectionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _ClusterSpec, ClusterSpec, ClusterSpecImpl, newClusterSpecImpl } from './clusterSpec';\n\n\n/**\n * A Cluster represents a physical location, usually associated with a Kubernetes zone or region. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Cluster { \n    metadata?: MetadataWithId;\n    spec: ClusterSpec;\n}\n\nexport interface Cluster extends _Cluster {\n    _builtin_original?: _Cluster;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ClusterImpl  implements _Cluster {\n    _builtin_original?: _Cluster = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: ClusterSpec ;\n    constructor(base: _Cluster) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newClusterImpl(base: _Cluster): ClusterImpl {\n    return new ClusterImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configuration for a Cluster \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ClusterConfig { \n    /**\n     * descriptive info for the cluster\n     */\n    description?: string;\n    /**\n     * A list of ip addresses to reach the cluster\n     */\n    ip_addresses?: Array<string>;\n}\n\nexport interface ClusterConfig extends _ClusterConfig {\n    _builtin_original?: _ClusterConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ClusterConfigImpl  implements _ClusterConfig {\n    _builtin_original?: _ClusterConfig = undefined;\n    public description: string  | undefined ;\n    public ip_addresses: Array<string>  | undefined ;\n    constructor(base: _ClusterConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ip_addresses') >= 0) {\n            this.ip_addresses = base.ip_addresses;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newClusterConfigImpl(base: _ClusterConfig): ClusterConfigImpl {\n    return new ClusterConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ClusterConfig, ClusterConfig, ClusterConfigImpl, newClusterConfigImpl } from './clusterConfig';\n\n\n/**\n * Spec for a Cluster.  The name and domain specified for a Cluster defines a CNAME that would be used to route to this Cluster. The CNAME would therefore resolve and provide the ip_addresses. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ClusterSpec { \n    /**\n     * A domain as per RFC 1123. \n     */\n    name?: string;\n    /**\n     * A domain as per RFC 1123. \n     */\n    domain?: string;\n    config?: ClusterConfig;\n}\n\nexport interface ClusterSpec extends _ClusterSpec {\n    _builtin_original?: _ClusterSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ClusterSpecImpl  implements _ClusterSpec {\n    _builtin_original?: _ClusterSpec = undefined;\n    public name: string  | undefined ;\n    public domain: string  | undefined ;\n    public config: ClusterConfig  | undefined ;\n    constructor(base: _ClusterSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'domain') >= 0) {\n            this.domain = base.domain;\n        }\n        if (Object.keys(base).findIndex(key => key === 'config') >= 0) {\n            this.config = base.config;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newClusterSpecImpl(base: _ClusterSpec): ClusterSpecImpl {\n    return new ClusterSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _CombinedResourceRulesStatus, CombinedResourceRulesStatus, CombinedResourceRulesStatusImpl, newCombinedResourceRulesStatusImpl } from './combinedResourceRulesStatus';\n\n\n/**\n * Describes a set of rules collected together by combining them based on a properties such as the role which contains them, or the scope at which the rule is matched. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CombinedResourceRules { \n    status: CombinedResourceRulesStatus;\n}\n\nexport interface CombinedResourceRules extends _CombinedResourceRules {\n    _builtin_original?: _CombinedResourceRules;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CombinedResourceRulesImpl  implements _CombinedResourceRules {\n    _builtin_original?: _CombinedResourceRules = undefined;\n    public status: CombinedResourceRulesStatus ;\n    constructor(base: _CombinedResourceRules) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newCombinedResourceRulesImpl(base: _CombinedResourceRules): CombinedResourceRulesImpl {\n    return new CombinedResourceRulesImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RuleSetNode, RuleSetNode, RuleSetNodeImpl, newRuleSetNodeImpl } from './ruleSetNode';\n\n\n/**\n * A RuleSet collects rules into a tree which so that nested rules may be evaluated in a well-defined manner. These trees are typically built from explicit configuration (e.g. nested child_rules within a RulesConfig). A RuleSet contains a node and a list of children. The node is the parent to the children. If there are no children, then this RuleSet is a leaf. A node corresponds to a RuleConfig, and the children correspond to the RuleConfig objects associated to the RuleConfig via a RuleSetComponent. A node with no parents is a root. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RuleSet { \n    node: RuleSetNode;\n    /**\n     * The children of `node` as determined from the associated RuleSetComponent list. \n     */\n    children: Array<RuleSet>;\n}\n\nexport interface RuleSet extends _RuleSet {\n    _builtin_original?: _RuleSet;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RuleSetImpl  implements _RuleSet {\n    _builtin_original?: _RuleSet = undefined;\n    public node: RuleSetNode ;\n    public children: Array<RuleSet> ;\n    constructor(base: _RuleSet) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'node') >= 0) {\n            this.node = base.node;\n        }\n        if (Object.keys(base).findIndex(key => key === 'children') >= 0) {\n            if (base.children) {\n                this.children = base.children.map((original) => newRuleSetImpl(original));\n            } else {\n                this.children = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.children !== undefined) {\n            for (const item of this.children) {\n                if (item !== undefined && (item as RuleSetImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RuleSetImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newRuleSetImpl(base: _RuleSet): RuleSetImpl {\n    return new RuleSetImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RuleSet, RuleSet, RuleSetImpl, newRuleSetImpl } from './ruleSet';\nimport { _RuleScopeEnum, RuleScopeEnum, RuleScopeEnumImpl, newRuleScopeEnumImpl } from './ruleScopeEnum';\n\n\n/**\n * The status contents of a combined rule. Since the rule is synthesized, this will contain the majority of its information. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CombinedResourceRulesStatus { \n    /**\n     * Unique identifier\n     */\n    readonly resource_id?: string;\n    /**\n     * Unique identifier\n     */\n    readonly org_id?: string;\n    /**\n     * Unique identifier\n     */\n    readonly role_id?: string;\n    /**\n     * The name of the role under which these rules were combined. If no role was associated with the rules, will be empty. \n     */\n    role_name?: string;\n    /**\n     * The rules combined together by the common property indicated by scope or role_id. The rules are in the form of RuleSets so that clients may understand the hierarchy implied by nesting rules after combining based on roles. \n     */\n    rules?: Array<RuleSet>;\n    scope?: RuleScopeEnum;\n}\n\nexport interface CombinedResourceRulesStatus extends _CombinedResourceRulesStatus {\n    _builtin_original?: _CombinedResourceRulesStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CombinedResourceRulesStatusImpl  implements _CombinedResourceRulesStatus {\n    _builtin_original?: _CombinedResourceRulesStatus = undefined;\n    public readonly resource_id: string  | undefined ;\n    public readonly org_id: string  | undefined ;\n    public readonly role_id: string  | undefined ;\n    public role_name: string  | undefined ;\n    public rules: Array<RuleSet>  | undefined ;\n    public scope: RuleScopeEnum  | undefined ;\n    constructor(base: _CombinedResourceRulesStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'resource_id') >= 0) {\n            this.resource_id = base.resource_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'role_id') >= 0) {\n            this.role_id = base.role_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'role_name') >= 0) {\n            this.role_name = base.role_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'rules') >= 0) {\n            if (base.rules) {\n                this.rules = base.rules.map((original) => newRuleSetImpl(original));\n            } else {\n                this.rules = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'scope') >= 0) {\n            this.scope = base.scope;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.rules !== undefined) {\n            for (const item of this.rules) {\n                if (item !== undefined && (item as RuleSetImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RuleSetImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newCombinedResourceRulesStatusImpl(base: _CombinedResourceRulesStatus): CombinedResourceRulesStatusImpl {\n    return new CombinedResourceRulesStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _CombinedRulesStatus, CombinedRulesStatus, CombinedRulesStatusImpl, newCombinedRulesStatusImpl } from './combinedRulesStatus';\n\n\n/**\n * Describes a set of rules collected together by combining them based on a properties such as the role which contains them, or the scope at which the rule is matched. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CombinedRules { \n    status: CombinedRulesStatus;\n}\n\nexport interface CombinedRules extends _CombinedRules {\n    _builtin_original?: _CombinedRules;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CombinedRulesImpl  implements _CombinedRules {\n    _builtin_original?: _CombinedRules = undefined;\n    public status: CombinedRulesStatus ;\n    constructor(base: _CombinedRules) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newCombinedRulesImpl(base: _CombinedRules): CombinedRulesImpl {\n    return new CombinedRulesImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _RuleSpec, RuleSpec, RuleSpecImpl, newRuleSpecImpl } from './ruleSpec';\n\n\n/**\n * A Rule defines a set of conditions which, if matched, allow a request to proceed through the system. If no rules match, the request will be denied. The Rule is a base class, with more concrete classes specifying precise match conditions. Rules may be associated with roles to allow for users to be granted collections of rules. Rules are uniquely identified by their id. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RuleV2 { \n    metadata?: MetadataWithId;\n    spec: RuleSpec;\n}\n\nexport interface RuleV2 extends _RuleV2 {\n    _builtin_original?: _RuleV2;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RuleV2Impl  implements _RuleV2 {\n    _builtin_original?: _RuleV2 = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: RuleSpec ;\n    constructor(base: _RuleV2) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newRuleV2Impl(base: _RuleV2): RuleV2Impl {\n    return new RuleV2Impl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RuleV2, RuleV2, RuleV2Impl, newRuleV2Impl } from './ruleV2';\nimport { _RuleScopeEnum, RuleScopeEnum, RuleScopeEnumImpl, newRuleScopeEnumImpl } from './ruleScopeEnum';\n\n\n/**\n * The status contents of a combined rule. Since the rule is synthesized, this will contain the majority of its information. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CombinedRulesStatus { \n    /**\n     * Unique identifier\n     */\n    readonly app_id?: string;\n    /**\n     * Unique identifier\n     */\n    readonly org_id?: string;\n    /**\n     * Unique identifier\n     */\n    readonly role_id?: string;\n    /**\n     * The name of the role under which these rules were combined. If no role was associated with the rules, will be empty. \n     */\n    role_name?: string;\n    /**\n     * The rules combined together by the common property indicated by scope or role_id \n     */\n    rules?: Array<RuleV2>;\n    scope?: RuleScopeEnum;\n}\n\nexport interface CombinedRulesStatus extends _CombinedRulesStatus {\n    _builtin_original?: _CombinedRulesStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CombinedRulesStatusImpl  implements _CombinedRulesStatus {\n    _builtin_original?: _CombinedRulesStatus = undefined;\n    public readonly app_id: string  | undefined ;\n    public readonly org_id: string  | undefined ;\n    public readonly role_id: string  | undefined ;\n    public role_name: string  | undefined ;\n    public rules: Array<RuleV2>  | undefined ;\n    public scope: RuleScopeEnum  | undefined ;\n    constructor(base: _CombinedRulesStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'app_id') >= 0) {\n            this.app_id = base.app_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'role_id') >= 0) {\n            this.role_id = base.role_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'role_name') >= 0) {\n            this.role_name = base.role_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'rules') >= 0) {\n            if (base.rules) {\n                this.rules = base.rules.map((original) => newRuleV2Impl(original));\n            } else {\n                this.rules = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'scope') >= 0) {\n            this.scope = base.scope;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.rules !== undefined) {\n            for (const item of this.rules) {\n                if (item !== undefined && (item as RuleV2Impl)._remove_builtin_extensions !== undefined) {\n                    (item as RuleV2Impl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newCombinedRulesStatusImpl(base: _CombinedRulesStatus): CombinedRulesStatusImpl {\n    return new CombinedRulesStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithOnlyId, MetadataWithOnlyId, MetadataWithOnlyIdImpl, newMetadataWithOnlyIdImpl } from './metadataWithOnlyId';\nimport { _CombinedUserDetailStatus, CombinedUserDetailStatus, CombinedUserDetailStatusImpl, newCombinedUserDetailStatusImpl } from './combinedUserDetailStatus';\n\n\n/**\n * Contains information about a user in the system: their profile information, their preferences, and so on. Use this to get all the high level information you need about a user in one request. The id of this object is the user\\'s id. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CombinedUserDetail { \n    metadata?: MetadataWithOnlyId;\n    status?: CombinedUserDetailStatus;\n}\n\nexport interface CombinedUserDetail extends _CombinedUserDetail {\n    _builtin_original?: _CombinedUserDetail;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CombinedUserDetailImpl  implements _CombinedUserDetail {\n    _builtin_original?: _CombinedUserDetail = undefined;\n    public metadata: MetadataWithOnlyId  | undefined ;\n    public status: CombinedUserDetailStatus  | undefined ;\n    constructor(base: _CombinedUserDetail) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newCombinedUserDetailImpl(base: _CombinedUserDetail): CombinedUserDetailImpl {\n    return new CombinedUserDetailImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _MFAChallengeMethodSpec, MFAChallengeMethodSpec, MFAChallengeMethodSpecImpl, newMFAChallengeMethodSpecImpl } from './mFAChallengeMethodSpec';\n\n\n/**\n * A multi-factor authentication challenge method configuration\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MFAChallengeMethod { \n    metadata?: MetadataWithId;\n    spec: MFAChallengeMethodSpec;\n}\n\nexport interface MFAChallengeMethod extends _MFAChallengeMethod {\n    _builtin_original?: _MFAChallengeMethod;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MFAChallengeMethodImpl  implements _MFAChallengeMethod {\n    _builtin_original?: _MFAChallengeMethod = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: MFAChallengeMethodSpec ;\n    constructor(base: _MFAChallengeMethod) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMFAChallengeMethodImpl(base: _MFAChallengeMethod): MFAChallengeMethodImpl {\n    return new MFAChallengeMethodImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _User, User, UserImpl, newUserImpl } from './user';\nimport { _MFAChallengeMethod, MFAChallengeMethod, MFAChallengeMethodImpl, newMFAChallengeMethodImpl } from './mFAChallengeMethod';\n\n\n/**\n * A `CombinedUserDetailStatus` joins together all the information about a user necessary to perform most operations related to them. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CombinedUserDetailStatus { \n    user?: User;\n    /**\n     * The Multifactor authentication challenge methods configured by the user.\n     */\n    mfa_challenge_methods?: Array<MFAChallengeMethod>;\n}\n\nexport interface CombinedUserDetailStatus extends _CombinedUserDetailStatus {\n    _builtin_original?: _CombinedUserDetailStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CombinedUserDetailStatusImpl  implements _CombinedUserDetailStatus {\n    _builtin_original?: _CombinedUserDetailStatus = undefined;\n    public user: User  | undefined ;\n    public mfa_challenge_methods: Array<MFAChallengeMethod>  | undefined ;\n    constructor(base: _CombinedUserDetailStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user') >= 0) {\n            this.user = base.user;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mfa_challenge_methods') >= 0) {\n            if (base.mfa_challenge_methods) {\n                this.mfa_challenge_methods = base.mfa_challenge_methods.map((original) => newMFAChallengeMethodImpl(original));\n            } else {\n                this.mfa_challenge_methods = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.mfa_challenge_methods !== undefined) {\n            for (const item of this.mfa_challenge_methods) {\n                if (item !== undefined && (item as MFAChallengeMethodImpl)._remove_builtin_extensions !== undefined) {\n                    (item as MFAChallengeMethodImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newCombinedUserDetailStatusImpl(base: _CombinedUserDetailStatus): CombinedUserDetailStatusImpl {\n    return new CombinedUserDetailStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Fields common to many metadata objects. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CommonMetadata { \n    /**\n     * Creation time\n     */\n    readonly created?: Date;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n}\n\nexport interface CommonMetadata extends _CommonMetadata {\n    _builtin_original?: _CommonMetadata;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CommonMetadataImpl  implements _CommonMetadata {\n    _builtin_original?: _CommonMetadata = undefined;\n    public readonly created: Date  | undefined ;\n    public readonly updated: Date  | undefined ;\n    constructor(base: _CommonMetadata) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'created') >= 0) {\n            this.created = base.created;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newCommonMetadataImpl(base: _CommonMetadata): CommonMetadataImpl {\n    return new CommonMetadataImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RuleConditionBase, RuleConditionBase, RuleConditionBaseImpl, newRuleConditionBaseImpl } from './ruleConditionBase';\n\n\n/**\n * A RuleCondition represents a piece of information whose truth is evaluated in order to determine if a rule\\'s action should be executed.  Multiple RuleConditions are typically combined by Rule into a single logical statement. The method by which they are combined (conjunction vs disjunction) depends on the rule itself. The facts evaluated to determine the truth of a RuleCondition and any constraints on those facts are specified by a more concrete type of RuleConditionBase.  A RuleCondition may be `negated`, in which case it will be true if the concrete condition is false. Otherwise the truth of the RuleCondition matches the truth of the concrete condition. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RuleCondition { \n    /**\n     * Whether or not the RuleCondition is true if the concrete condition is. Set to true to have the RuleCondition evaluate to true if and only if the concrete condition is false. \n     */\n    negated: boolean;\n    condition: RuleConditionBase;\n}\n\nexport interface RuleCondition extends _RuleCondition {\n    _builtin_original?: _RuleCondition;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RuleConditionImpl  implements _RuleCondition {\n    _builtin_original?: _RuleCondition = undefined;\n    public negated: boolean ;\n    public condition: RuleConditionBase ;\n    constructor(base: _RuleCondition) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'negated') >= 0) {\n            this.negated = base.negated;\n        }\n        if (Object.keys(base).findIndex(key => key === 'condition') >= 0) {\n            this.condition = base.condition;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newRuleConditionImpl(base: _RuleCondition): RuleConditionImpl {\n    return new RuleConditionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RuleCondition, RuleCondition, RuleConditionImpl, newRuleConditionImpl } from './ruleCondition';\n\n\n/**\n * A CompoundRuleCondition combines multiple RuleConditions in Conjunctive Normal Form (AND) or Disjunctive Normal Form (OR). Using the CompoundRuleCondition, a user can express complicated logical statements by recursively combining CompoundRuleConditions with varying settings of the `list_type` and `negation` (in the RuleCondition) fields.  A CompoundRuleCondition is true based on the truth of the conditions in its list and the type of list it has. `list_type` controls the evaluation of the CompoundRuleCondition as follows:   - `cnf`: Conjunctive Normal Form. If all RuleCondition in the `condition_list` is true, then the     CompoundRuleCondition is true. Otherwise, it is false. That is, the expression may be viewed as:       `condition_list[0] AND condition_list[1] AND ... AND condition_list[len(condition_list) - 1]`   - `dnf`: Disjunctive Normal Form. If any RuleCondition in the `condition_list` is true, then the     CompoundRuleCondition is true. If no RuleConditions are true, then the CompoundRuleCondition is false.     That is, the expression may be viewed as:       `condition_list[0] OR condition_list[1] OR ... OR condition_list[len(condition_list) - 1]`  Note that the conditions in the `condition_list` may be evaluated in any order.  CompoundRuleConditions may not be nested more than 4 levels deep. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CompoundRuleCondition { \n    /**\n     * The discriminator for the condition\n     */\n    condition_type: string;\n    /**\n     * The list of conditions whose truth determines the truth of the CompoundRuleCondition. How that the conditions\\' truth is combined depends on `list_type`. \n     */\n    condition_list: Array<RuleCondition>;\n    /**\n     * How to combine the truth of the conditions in `condition_list` to determine the overall truth of the CompoundRuleCondition. - `cnf`: Conjunctive Normal Form. The conditions are combined using an AND operator. - `dnf`: Disjunctive Normal Form. The conditions are combined using an OR operator. \n     */\n    list_type: CompoundRuleCondition.ListTypeEnum;\n}\n\nexport interface CompoundRuleCondition extends _CompoundRuleCondition {\n    _builtin_original?: _CompoundRuleCondition;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CompoundRuleConditionImpl  implements _CompoundRuleCondition {\n    _builtin_original?: _CompoundRuleCondition = undefined;\n    public condition_type: string ;\n    public condition_list: Array<RuleCondition> ;\n    public list_type: CompoundRuleCondition.ListTypeEnum ;\n    constructor(base: _CompoundRuleCondition) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'condition_type') >= 0) {\n            this.condition_type = base.condition_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'condition_list') >= 0) {\n            if (base.condition_list) {\n                this.condition_list = base.condition_list.map((original) => newRuleConditionImpl(original));\n            } else {\n                this.condition_list = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'list_type') >= 0) {\n            this.list_type = base.list_type;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.condition_list !== undefined) {\n            for (const item of this.condition_list) {\n                if (item !== undefined && (item as RuleConditionImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RuleConditionImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace CompoundRuleCondition {\n    export type ListTypeEnum = 'cnf' | 'dnf';\n    export const ListTypeEnum = {\n        cnf: 'cnf' as ListTypeEnum,\n        dnf: 'dnf' as ListTypeEnum\n    };\n}\n\n\nexport function newCompoundRuleConditionImpl(base: _CompoundRuleCondition): CompoundRuleConditionImpl {\n    return new CompoundRuleConditionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StatsPublishingConfig, StatsPublishingConfig, StatsPublishingConfigImpl, newStatsPublishingConfigImpl } from './statsPublishingConfig';\n\n\n/**\n * Configures how one or more connectors of an organisation publish statistics \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConfigureConnectorStatsPublishingRequest { \n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * The list of connectors to configure\n     */\n    connector_ids: Array<string>;\n    stats_publishing_config: StatsPublishingConfig;\n}\n\nexport interface ConfigureConnectorStatsPublishingRequest extends _ConfigureConnectorStatsPublishingRequest {\n    _builtin_original?: _ConfigureConnectorStatsPublishingRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConfigureConnectorStatsPublishingRequestImpl  implements _ConfigureConnectorStatsPublishingRequest {\n    _builtin_original?: _ConfigureConnectorStatsPublishingRequest = undefined;\n    public org_id: string ;\n    public connector_ids: Array<string> ;\n    public stats_publishing_config: StatsPublishingConfig ;\n    constructor(base: _ConfigureConnectorStatsPublishingRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_ids') >= 0) {\n            this.connector_ids = base.connector_ids;\n        }\n        if (Object.keys(base).findIndex(key => key === 'stats_publishing_config') >= 0) {\n            this.stats_publishing_config = base.stats_publishing_config;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newConfigureConnectorStatsPublishingRequestImpl(base: _ConfigureConnectorStatsPublishingRequest): ConfigureConnectorStatsPublishingRequestImpl {\n    return new ConfigureConnectorStatsPublishingRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _ConnectorStatus, ConnectorStatus, ConnectorStatusImpl, newConnectorStatusImpl } from './connectorStatus';\nimport { _ConnectorSpec, ConnectorSpec, ConnectorSpecImpl, newConnectorSpecImpl } from './connectorSpec';\n\n\n/**\n * Defines how application services are accessed\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Connector { \n    metadata?: MetadataWithId;\n    spec: ConnectorSpec;\n    status?: ConnectorStatus;\n}\n\nexport interface Connector extends _Connector {\n    _builtin_original?: _Connector;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorImpl  implements _Connector {\n    _builtin_original?: _Connector = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: ConnectorSpec ;\n    public status: ConnectorStatus  | undefined ;\n    constructor(base: _Connector) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newConnectorImpl(base: _Connector): ConnectorImpl {\n    return new ConnectorImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The generic information about a connector. Typically used to point to more interesting information via another lookup.  The org_id is the ID of the organisation to which owns this connector. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConnectorBaseInfo { \n    /**\n     * Unique identifier\n     */\n    org_id: string;\n}\n\nexport interface ConnectorBaseInfo extends _ConnectorBaseInfo {\n    _builtin_original?: _ConnectorBaseInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorBaseInfoImpl  implements _ConnectorBaseInfo {\n    _builtin_original?: _ConnectorBaseInfo = undefined;\n    public org_id: string ;\n    constructor(base: _ConnectorBaseInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newConnectorBaseInfoImpl(base: _ConnectorBaseInfo): ConnectorBaseInfoImpl {\n    return new ConnectorBaseInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Routing configuration common to all types of connectors \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConnectorCloudRouting { \n    /**\n     * A list of feature tags describing point of presences to establish tunnels with. The connector will connector to any point of presence identified by at least one the tags. \n     */\n    point_of_presence_tags: Array<string>;\n}\n\nexport interface ConnectorCloudRouting extends _ConnectorCloudRouting {\n    _builtin_original?: _ConnectorCloudRouting;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorCloudRoutingImpl  implements _ConnectorCloudRouting {\n    _builtin_original?: _ConnectorCloudRouting = undefined;\n    public point_of_presence_tags: Array<string> ;\n    constructor(base: _ConnectorCloudRouting) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'point_of_presence_tags') >= 0) {\n            this.point_of_presence_tags = base.point_of_presence_tags;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newConnectorCloudRoutingImpl(base: _ConnectorCloudRouting): ConnectorCloudRoutingImpl {\n    return new ConnectorCloudRoutingImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A generic float metric. Its meaning is described by its name. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _GenericFloatMetric { \n    /**\n     * The name of the metric. Typically only one metric of a given name will be provided, but uniqueness is not guaranteed. The name describes the meaning of the value\n     */\n    name: string;\n    /**\n     * The value of the metric. The meaning of this value depends on the name.\n     */\n    value: number;\n}\n\nexport interface GenericFloatMetric extends _GenericFloatMetric {\n    _builtin_original?: _GenericFloatMetric;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class GenericFloatMetricImpl  implements _GenericFloatMetric {\n    _builtin_original?: _GenericFloatMetric = undefined;\n    public name: string ;\n    public value: number ;\n    constructor(base: _GenericFloatMetric) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'value') >= 0) {\n            this.value = base.value;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newGenericFloatMetricImpl(base: _GenericFloatMetric): GenericFloatMetricImpl {\n    return new GenericFloatMetricImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A generic integer metric. Its meaning is described by its name. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _GenericIntMetric { \n    /**\n     * The name of the metric. Typically only one metric of a given name will be provided, but uniqueness is not guaranteed. The name describes the meaning of the value\n     */\n    name: string;\n    /**\n     * The value of the metric. The meaning of this value depends on the name.\n     */\n    value: number;\n}\n\nexport interface GenericIntMetric extends _GenericIntMetric {\n    _builtin_original?: _GenericIntMetric;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class GenericIntMetricImpl  implements _GenericIntMetric {\n    _builtin_original?: _GenericIntMetric = undefined;\n    public name: string ;\n    public value: number ;\n    constructor(base: _GenericIntMetric) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'value') >= 0) {\n            this.value = base.value;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newGenericIntMetricImpl(base: _GenericIntMetric): GenericIntMetricImpl {\n    return new GenericIntMetricImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _GenericFloatMetric, GenericFloatMetric, GenericFloatMetricImpl, newGenericFloatMetricImpl } from './genericFloatMetric';\nimport { _GenericIntMetric, GenericIntMetric, GenericIntMetricImpl, newGenericIntMetricImpl } from './genericIntMetric';\n\n\n/**\n * Diagnostic statistics about the Connector and the system on which is is running. The list of statistics may change based on the version of the connector, the system on which it runs, or other external factors. Do not rely on any given statistic being present. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConnectorDiagnosticStats { \n    /**\n     * The list of generic int metrics from the Connector.\n     */\n    generic_int_metrics: Array<GenericIntMetric>;\n    /**\n     * The list of generic float metrics from the Connector.\n     */\n    generic_float_metrics: Array<GenericFloatMetric>;\n}\n\nexport interface ConnectorDiagnosticStats extends _ConnectorDiagnosticStats {\n    _builtin_original?: _ConnectorDiagnosticStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorDiagnosticStatsImpl  implements _ConnectorDiagnosticStats {\n    _builtin_original?: _ConnectorDiagnosticStats = undefined;\n    public generic_int_metrics: Array<GenericIntMetric> ;\n    public generic_float_metrics: Array<GenericFloatMetric> ;\n    constructor(base: _ConnectorDiagnosticStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'generic_int_metrics') >= 0) {\n            if (base.generic_int_metrics) {\n                this.generic_int_metrics = base.generic_int_metrics.map((original) => newGenericIntMetricImpl(original));\n            } else {\n                this.generic_int_metrics = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'generic_float_metrics') >= 0) {\n            if (base.generic_float_metrics) {\n                this.generic_float_metrics = base.generic_float_metrics.map((original) => newGenericFloatMetricImpl(original));\n            } else {\n                this.generic_float_metrics = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.generic_int_metrics !== undefined) {\n            for (const item of this.generic_int_metrics) {\n                if (item !== undefined && (item as GenericIntMetricImpl)._remove_builtin_extensions !== undefined) {\n                    (item as GenericIntMetricImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.generic_float_metrics !== undefined) {\n            for (const item of this.generic_float_metrics) {\n                if (item !== undefined && (item as GenericFloatMetricImpl)._remove_builtin_extensions !== undefined) {\n                    (item as GenericFloatMetricImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newConnectorDiagnosticStatsImpl(base: _ConnectorDiagnosticStats): ConnectorDiagnosticStatsImpl {\n    return new ConnectorDiagnosticStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ConnectorInstanceSpec, ConnectorInstanceSpec, ConnectorInstanceSpecImpl, newConnectorInstanceSpecImpl } from './connectorInstanceSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _ConnectorInstanceStatus, ConnectorInstanceStatus, ConnectorInstanceStatusImpl, newConnectorInstanceStatusImpl } from './connectorInstanceStatus';\n\n\n/**\n * An installed instance of an Connector. A specific Connector guid can be installed on multiple devices for high availability. For each running/installed instance, each device uniquely creates an ConnectorInstance. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConnectorInstance { \n    metadata?: MetadataWithId;\n    spec: ConnectorInstanceSpec;\n    status?: ConnectorInstanceStatus;\n}\n\nexport interface ConnectorInstance extends _ConnectorInstance {\n    _builtin_original?: _ConnectorInstance;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorInstanceImpl  implements _ConnectorInstance {\n    _builtin_original?: _ConnectorInstance = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: ConnectorInstanceSpec ;\n    public status: ConnectorInstanceStatus  | undefined ;\n    constructor(base: _ConnectorInstance) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newConnectorInstanceImpl(base: _ConnectorInstance): ConnectorInstanceImpl {\n    return new ConnectorInstanceImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The specification of the ConnectorInstance\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConnectorInstanceSpec { \n    /**\n     * Unique identifier\n     */\n    readonly connector_id: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * If require_instance_service_account is false (default), the service account in the AgentConnector will be used for this instance. If require_instance_service_account is true , a unique service account for this instance will be created. \n     */\n    require_instance_service_account?: boolean;\n    /**\n     * Service account user GUID used to deploy the connector\n     */\n    readonly service_account_id?: string;\n}\n\nexport interface ConnectorInstanceSpec extends _ConnectorInstanceSpec {\n    _builtin_original?: _ConnectorInstanceSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorInstanceSpecImpl  implements _ConnectorInstanceSpec {\n    _builtin_original?: _ConnectorInstanceSpec = undefined;\n    public readonly connector_id: string ;\n    public org_id: string ;\n    public require_instance_service_account: boolean  | undefined ;\n    public readonly service_account_id: string  | undefined ;\n    constructor(base: _ConnectorInstanceSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'connector_id') >= 0) {\n            this.connector_id = base.connector_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'require_instance_service_account') >= 0) {\n            this.require_instance_service_account = base.require_instance_service_account;\n        }\n        if (Object.keys(base).findIndex(key => key === 'service_account_id') >= 0) {\n            this.service_account_id = base.service_account_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newConnectorInstanceSpecImpl(base: _ConnectorInstanceSpec): ConnectorInstanceSpecImpl {\n    return new ConnectorInstanceSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ConnectorStats, ConnectorStats, ConnectorStatsImpl, newConnectorStatsImpl } from './connectorStats';\nimport { _OperationalStatus, OperationalStatus, OperationalStatusImpl, newOperationalStatusImpl } from './operationalStatus';\n\n\n/**\n * Status information pertaining to a Connector. Note that stats will only be returned if explicitly requested. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConnectorInstanceStatus { \n    /**\n     * The connector instance name.\n     */\n    name?: string;\n    /**\n     * The connector instance number.\n     */\n    instance_number?: number;\n    /**\n     * Service account user GUID used to deploy the connector\n     */\n    service_account_id?: string;\n    stats?: ConnectorStats;\n    operational_status?: OperationalStatus;\n}\n\nexport interface ConnectorInstanceStatus extends _ConnectorInstanceStatus {\n    _builtin_original?: _ConnectorInstanceStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorInstanceStatusImpl  implements _ConnectorInstanceStatus {\n    _builtin_original?: _ConnectorInstanceStatus = undefined;\n    public name: string  | undefined ;\n    public instance_number: number  | undefined ;\n    public service_account_id: string  | undefined ;\n    public stats: ConnectorStats  | undefined ;\n    public operational_status: OperationalStatus  | undefined ;\n    constructor(base: _ConnectorInstanceStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'instance_number') >= 0) {\n            this.instance_number = base.instance_number;\n        }\n        if (Object.keys(base).findIndex(key => key === 'service_account_id') >= 0) {\n            this.service_account_id = base.service_account_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'stats') >= 0) {\n            this.stats = base.stats;\n        }\n        if (Object.keys(base).findIndex(key => key === 'operational_status') >= 0) {\n            this.operational_status = base.operational_status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newConnectorInstanceStatusImpl(base: _ConnectorInstanceStatus): ConnectorInstanceStatusImpl {\n    return new ConnectorInstanceStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The specification of the ConnectorSecureTransfer\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConnectorSecureTransferSpec { \n    /**\n     * Unique identifier\n     */\n    readonly connector_id: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * Unique identifier\n     */\n    src_instance_id?: string;\n    /**\n     * The source instance public key\n     */\n    src_public_key?: string;\n    /**\n     * Unique identifier\n     */\n    dst_instance_id?: string;\n    /**\n     * The destination instance public key\n     */\n    dst_public_key?: string;\n    /**\n     * The type of data to be transfered. Note that this field only has meaning to the source and destination. Supports:    - \\'private_key\\' \n     */\n    transfer_type?: string;\n}\n\nexport interface ConnectorSecureTransferSpec extends _ConnectorSecureTransferSpec {\n    _builtin_original?: _ConnectorSecureTransferSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorSecureTransferSpecImpl  implements _ConnectorSecureTransferSpec {\n    _builtin_original?: _ConnectorSecureTransferSpec = undefined;\n    public readonly connector_id: string ;\n    public org_id: string ;\n    public src_instance_id: string  | undefined ;\n    public src_public_key: string  | undefined ;\n    public dst_instance_id: string  | undefined ;\n    public dst_public_key: string  | undefined ;\n    public transfer_type: string  | undefined ;\n    constructor(base: _ConnectorSecureTransferSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'connector_id') >= 0) {\n            this.connector_id = base.connector_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'src_instance_id') >= 0) {\n            this.src_instance_id = base.src_instance_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'src_public_key') >= 0) {\n            this.src_public_key = base.src_public_key;\n        }\n        if (Object.keys(base).findIndex(key => key === 'dst_instance_id') >= 0) {\n            this.dst_instance_id = base.dst_instance_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'dst_public_key') >= 0) {\n            this.dst_public_key = base.dst_public_key;\n        }\n        if (Object.keys(base).findIndex(key => key === 'transfer_type') >= 0) {\n            this.transfer_type = base.transfer_type;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newConnectorSecureTransferSpecImpl(base: _ConnectorSecureTransferSpec): ConnectorSecureTransferSpecImpl {\n    return new ConnectorSecureTransferSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Status information pertaining to a ConnectorSecureTransfer. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConnectorSecureTransferStatus { \n    /**\n     * The expiry time for this transfer. \n     */\n    expiry_time?: Date;\n    /**\n     * The length of encrypted data that has been stored. \n     */\n    encrypted_data_length?: number;\n    /**\n     * The status of the copy.  Can be defined as one of the following:   pending: secure transfer is pending. Not all information has been populated     for the transfer to proceed.   ready: secure transfer is ready. All information has been populated     and is ready for transfer to proceed.   expired: secure transfer is no longer valid and is expired \n     */\n    status?: ConnectorSecureTransferStatus.StatusEnum;\n}\n\nexport interface ConnectorSecureTransferStatus extends _ConnectorSecureTransferStatus {\n    _builtin_original?: _ConnectorSecureTransferStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorSecureTransferStatusImpl  implements _ConnectorSecureTransferStatus {\n    _builtin_original?: _ConnectorSecureTransferStatus = undefined;\n    public expiry_time: Date  | undefined ;\n    public encrypted_data_length: number  | undefined ;\n    public status: ConnectorSecureTransferStatus.StatusEnum  | undefined ;\n    constructor(base: _ConnectorSecureTransferStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'expiry_time') >= 0) {\n            this.expiry_time = base.expiry_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'encrypted_data_length') >= 0) {\n            this.encrypted_data_length = base.encrypted_data_length;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace ConnectorSecureTransferStatus {\n    export type StatusEnum = 'pending' | 'ready' | 'expired';\n    export const StatusEnum = {\n        pending: 'pending' as StatusEnum,\n        ready: 'ready' as StatusEnum,\n        expired: 'expired' as StatusEnum\n    };\n}\n\n\nexport function newConnectorSecureTransferStatusImpl(base: _ConnectorSecureTransferStatus): ConnectorSecureTransferStatusImpl {\n    return new ConnectorSecureTransferStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ConnectorServiceSpec, ConnectorServiceSpec, ConnectorServiceSpecImpl, newConnectorServiceSpecImpl } from './connectorServiceSpec';\nimport { _ConnectorServiceStatus, ConnectorServiceStatus, ConnectorServiceStatusImpl, newConnectorServiceStatusImpl } from './connectorServiceStatus';\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConnectorService { \n    spec: ConnectorServiceSpec;\n    status?: ConnectorServiceStatus;\n}\n\nexport interface ConnectorService extends _ConnectorService {\n    _builtin_original?: _ConnectorService;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorServiceImpl  implements _ConnectorService {\n    _builtin_original?: _ConnectorService = undefined;\n    public spec: ConnectorServiceSpec ;\n    public status: ConnectorServiceStatus  | undefined ;\n    constructor(base: _ConnectorService) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newConnectorServiceImpl(base: _ConnectorService): ConnectorServiceImpl {\n    return new ConnectorServiceImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Specification for ConnectorService\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConnectorServiceSpec { \n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * Unique identifier\n     */\n    connector_id: string;\n    /**\n     * The specified service. Suppported types are: - audits \n     */\n    service: string;\n}\n\nexport interface ConnectorServiceSpec extends _ConnectorServiceSpec {\n    _builtin_original?: _ConnectorServiceSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorServiceSpecImpl  implements _ConnectorServiceSpec {\n    _builtin_original?: _ConnectorServiceSpec = undefined;\n    public org_id: string ;\n    public connector_id: string ;\n    public service: string ;\n    constructor(base: _ConnectorServiceSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_id') >= 0) {\n            this.connector_id = base.connector_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'service') >= 0) {\n            this.service = base.service;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newConnectorServiceSpecImpl(base: _ConnectorServiceSpec): ConnectorServiceSpecImpl {\n    return new ConnectorServiceSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ApplicationService, ApplicationService, ApplicationServiceImpl, newApplicationServiceImpl } from './applicationService';\n\n\n/**\n * Status for ConnectorService\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConnectorServiceStatus { \n    application_service?: ApplicationService;\n}\n\nexport interface ConnectorServiceStatus extends _ConnectorServiceStatus {\n    _builtin_original?: _ConnectorServiceStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorServiceStatusImpl  implements _ConnectorServiceStatus {\n    _builtin_original?: _ConnectorServiceStatus = undefined;\n    public application_service: ApplicationService  | undefined ;\n    constructor(base: _ConnectorServiceStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'application_service') >= 0) {\n            this.application_service = base.application_service;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newConnectorServiceStatusImpl(base: _ConnectorServiceStatus): ConnectorServiceStatusImpl {\n    return new ConnectorServiceStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AdminStatus, AdminStatus, AdminStatusImpl, newAdminStatusImpl } from './adminStatus';\nimport { _ConnectorCloudRouting, ConnectorCloudRouting, ConnectorCloudRoutingImpl, newConnectorCloudRoutingImpl } from './connectorCloudRouting';\n\n\n/**\n * The specification of the Connector\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConnectorSpec { \n    /**\n     * A descriptive name for the connector\n     */\n    name: string;\n    /**\n     * A human readable slug to identify a resource and that is rfc1035 label compliant. The length has been restricted to 20 characters such that this name can be concatenated with other names or slugs. A slug is readOnly as it is generated by the backend resource. \n     */\n    name_slug?: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * The type of the connector\n     */\n    connector_type: ConnectorSpec.ConnectorTypeEnum;\n    /**\n     * Service account user GUID used to deploy the connector\n     */\n    readonly service_account_id?: string;\n    connector_cloud_routing?: ConnectorCloudRouting;\n    admin_status?: AdminStatus;\n    /**\n     * Inidicates whether traps (notifications) should be disabled for this entity. A true state indicates notifications will not be sent on transition. \n     */\n    trap_disabled?: boolean;\n    /**\n     * When true, the connector is considered a demo connector, and will be auto-deleted after 24 hours. \n     */\n    demo?: boolean;\n}\n\nexport interface ConnectorSpec extends _ConnectorSpec {\n    _builtin_original?: _ConnectorSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorSpecImpl  implements _ConnectorSpec {\n    _builtin_original?: _ConnectorSpec = undefined;\n    public name: string ;\n    public name_slug: string  | undefined ;\n    public org_id: string ;\n    public connector_type: ConnectorSpec.ConnectorTypeEnum ;\n    public readonly service_account_id: string  | undefined ;\n    public connector_cloud_routing: ConnectorCloudRouting  | undefined ;\n    public admin_status: AdminStatus  | undefined ;\n    public trap_disabled: boolean  | undefined ;\n    public demo: boolean  | undefined ;\n    constructor(base: _ConnectorSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name_slug') >= 0) {\n            this.name_slug = base.name_slug;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_type') >= 0) {\n            this.connector_type = base.connector_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'service_account_id') >= 0) {\n            this.service_account_id = base.service_account_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_cloud_routing') >= 0) {\n            this.connector_cloud_routing = base.connector_cloud_routing;\n        }\n        if (Object.keys(base).findIndex(key => key === 'admin_status') >= 0) {\n            this.admin_status = base.admin_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'trap_disabled') >= 0) {\n            this.trap_disabled = base.trap_disabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'demo') >= 0) {\n            this.demo = base.demo;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace ConnectorSpec {\n    export type ConnectorTypeEnum = 'agent' | 'ipsec';\n    export const ConnectorTypeEnum = {\n        agent: 'agent' as ConnectorTypeEnum,\n        ipsec: 'ipsec' as ConnectorTypeEnum\n    };\n}\n\n\nexport function newConnectorSpecImpl(base: _ConnectorSpec): ConnectorSpecImpl {\n    return new ConnectorSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ConnectorInstance, ConnectorInstance, ConnectorInstanceImpl, newConnectorInstanceImpl } from './connectorInstance';\nimport { _OperationalStatus, OperationalStatus, OperationalStatusImpl, newOperationalStatusImpl } from './operationalStatus';\n\n\n/**\n * The last reported statistics for a connector, broken down by instance, along with the overall status of the connector. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConnectorStaticStats { \n    /**\n     * Unique identifier\n     */\n    connector_id: string;\n    /**\n     * Basic information about the connector\\'s instances and their status \n     */\n    instances?: Array<ConnectorInstance>;\n    operational_status?: OperationalStatus;\n}\n\nexport interface ConnectorStaticStats extends _ConnectorStaticStats {\n    _builtin_original?: _ConnectorStaticStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorStaticStatsImpl  implements _ConnectorStaticStats {\n    _builtin_original?: _ConnectorStaticStats = undefined;\n    public connector_id: string ;\n    public instances: Array<ConnectorInstance>  | undefined ;\n    public operational_status: OperationalStatus  | undefined ;\n    constructor(base: _ConnectorStaticStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'connector_id') >= 0) {\n            this.connector_id = base.connector_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'instances') >= 0) {\n            if (base.instances) {\n                this.instances = base.instances.map((original) => newConnectorInstanceImpl(original));\n            } else {\n                this.instances = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'operational_status') >= 0) {\n            this.operational_status = base.operational_status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.instances !== undefined) {\n            for (const item of this.instances) {\n                if (item !== undefined && (item as ConnectorInstanceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ConnectorInstanceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newConnectorStaticStatsImpl(base: _ConnectorStaticStats): ConnectorStaticStatsImpl {\n    return new ConnectorStaticStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ApplicationServiceStats, ApplicationServiceStats, ApplicationServiceStatsImpl, newApplicationServiceStatsImpl } from './applicationServiceStats';\nimport { _FileShareServiceStats, FileShareServiceStats, FileShareServiceStatsImpl, newFileShareServiceStatsImpl } from './fileShareServiceStats';\nimport { _ConnectorSystemStats, ConnectorSystemStats, ConnectorSystemStatsImpl, newConnectorSystemStatsImpl } from './connectorSystemStats';\nimport { _ConnectorDiagnosticStats, ConnectorDiagnosticStats, ConnectorDiagnosticStatsImpl, newConnectorDiagnosticStatsImpl } from './connectorDiagnosticStats';\nimport { _ConnectorStatsMetadata, ConnectorStatsMetadata, ConnectorStatsMetadataImpl, newConnectorStatsMetadataImpl } from './connectorStatsMetadata';\nimport { _ServiceForwarderStats, ServiceForwarderStats, ServiceForwarderStatsImpl, newServiceForwarderStatsImpl } from './serviceForwarderStats';\n\n\n/**\n * Statistics periodically collected from a running Connector. These statistics may be used to understand how the Connector is performing, diagnose issues, and so on. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConnectorStats { \n    metadata: ConnectorStatsMetadata;\n    /**\n     * The summary status of the Connector. - A `good` status means that no action is neccessary on this Connector - A `warn` status means that there is an issue that should be dealt with   Examples include connections restarting frequently. - A `down` status indicates that there is a service accessibility problem   that should be dealt with as soon as possible. This could mean that there is a   problem with the Connector\\'s configuration, or the platform. - A `stale` status indicates that although there may not be anything wrong,   we haven\\'t been able to update the status recently. This may indicate   a communications issue between Agilicus and the Connector. \n     */\n    overall_status: ConnectorStats.OverallStatusEnum;\n    /**\n     * A list of strings that provide more info to further identify the reason for a particular overall_status. For example, if the overall_status is `warn`, an entry in this array would provide more details as to its reason. \n     */\n    overall_status_info?: Array<string>;\n    /**\n     * An array that contains a group of stats pertaining to ServiceForwarder.  A group of stats would comprise a list of ServiceForwarder stats managed by an entity, such as an AgentConnector. \n     */\n    forwarder_stats?: Array<ServiceForwarderStats>;\n    /**\n     * An array that contains a group of stats pertaining to an ApplicationService.  A group of stats would comprise a list of ApplicationService stats managed by an entity, such as an AgentConnector. \n     */\n    app_service_stats?: Array<ApplicationServiceStats>;\n    /**\n     * An array that contains a group of stats pertaining to a FileShareService.  A group of stats would comprise a list of FileShareServiceStats stats managed by an entity, such as an AgentConnector. \n     */\n    share_service_stats?: Array<FileShareServiceStats>;\n    diagnostic_stats?: ConnectorDiagnosticStats;\n    system?: ConnectorSystemStats;\n}\n\nexport interface ConnectorStats extends _ConnectorStats {\n    _builtin_original?: _ConnectorStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorStatsImpl  implements _ConnectorStats {\n    _builtin_original?: _ConnectorStats = undefined;\n    public metadata: ConnectorStatsMetadata ;\n    public overall_status: ConnectorStats.OverallStatusEnum ;\n    public overall_status_info: Array<string>  | undefined ;\n    public forwarder_stats: Array<ServiceForwarderStats>  | undefined ;\n    public app_service_stats: Array<ApplicationServiceStats>  | undefined ;\n    public share_service_stats: Array<FileShareServiceStats>  | undefined ;\n    public diagnostic_stats: ConnectorDiagnosticStats  | undefined ;\n    public system: ConnectorSystemStats  | undefined ;\n    constructor(base: _ConnectorStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'overall_status') >= 0) {\n            this.overall_status = base.overall_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'overall_status_info') >= 0) {\n            this.overall_status_info = base.overall_status_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'forwarder_stats') >= 0) {\n            if (base.forwarder_stats) {\n                this.forwarder_stats = base.forwarder_stats.map((original) => newServiceForwarderStatsImpl(original));\n            } else {\n                this.forwarder_stats = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'app_service_stats') >= 0) {\n            if (base.app_service_stats) {\n                this.app_service_stats = base.app_service_stats.map((original) => newApplicationServiceStatsImpl(original));\n            } else {\n                this.app_service_stats = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'share_service_stats') >= 0) {\n            if (base.share_service_stats) {\n                this.share_service_stats = base.share_service_stats.map((original) => newFileShareServiceStatsImpl(original));\n            } else {\n                this.share_service_stats = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'diagnostic_stats') >= 0) {\n            this.diagnostic_stats = base.diagnostic_stats;\n        }\n        if (Object.keys(base).findIndex(key => key === 'system') >= 0) {\n            this.system = base.system;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.forwarder_stats !== undefined) {\n            for (const item of this.forwarder_stats) {\n                if (item !== undefined && (item as ServiceForwarderStatsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ServiceForwarderStatsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.app_service_stats !== undefined) {\n            for (const item of this.app_service_stats) {\n                if (item !== undefined && (item as ApplicationServiceStatsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationServiceStatsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.share_service_stats !== undefined) {\n            for (const item of this.share_service_stats) {\n                if (item !== undefined && (item as FileShareServiceStatsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as FileShareServiceStatsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace ConnectorStats {\n    export type OverallStatusEnum = 'good' | 'warn' | 'down' | 'stale';\n    export const OverallStatusEnum = {\n        good: 'good' as OverallStatusEnum,\n        warn: 'warn' as OverallStatusEnum,\n        down: 'down' as OverallStatusEnum,\n        stale: 'stale' as OverallStatusEnum\n    };\n}\n\n\nexport function newConnectorStatsImpl(base: _ConnectorStats): ConnectorStatsImpl {\n    return new ConnectorStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Information about an ConnectorStats object. Useful to understand when stats were published or updated. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConnectorStatsMetadata { \n    /**\n     * When the statistics were first created\n     */\n    readonly creation_time?: Date;\n    /**\n     * When the statistics were collected\n     */\n    collection_time: Date;\n    /**\n     * When the statistics were received for storage\n     */\n    readonly receipt_time?: Date;\n    /**\n     * The identifier of the Connector publishing these statistics. The Connector publishes this information in order to ensure that an Connector does not accidentally publish to the wrong endpoint. \n     */\n    connector_id?: string;\n    /**\n     * The organisation identifier of the Connector publishing these statistics. The Connector publishes this information in order to ensure that an Connector does not accidentally publish to the wrong endpoint. \n     */\n    connector_org_id?: string;\n    /**\n     * The connector_instance_id (if applicable). \n     */\n    connector_instance_id?: string;\n}\n\nexport interface ConnectorStatsMetadata extends _ConnectorStatsMetadata {\n    _builtin_original?: _ConnectorStatsMetadata;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorStatsMetadataImpl  implements _ConnectorStatsMetadata {\n    _builtin_original?: _ConnectorStatsMetadata = undefined;\n    public readonly creation_time: Date  | undefined ;\n    public collection_time: Date ;\n    public readonly receipt_time: Date  | undefined ;\n    public connector_id: string  | undefined ;\n    public connector_org_id: string  | undefined ;\n    public connector_instance_id: string  | undefined ;\n    constructor(base: _ConnectorStatsMetadata) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'creation_time') >= 0) {\n            this.creation_time = base.creation_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'collection_time') >= 0) {\n            this.collection_time = base.collection_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'receipt_time') >= 0) {\n            this.receipt_time = base.receipt_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_id') >= 0) {\n            this.connector_id = base.connector_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_org_id') >= 0) {\n            this.connector_org_id = base.connector_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_instance_id') >= 0) {\n            this.connector_instance_id = base.connector_instance_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newConnectorStatsMetadataImpl(base: _ConnectorStatsMetadata): ConnectorStatsMetadataImpl {\n    return new ConnectorStatsMetadataImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ConnectorStats, ConnectorStats, ConnectorStatsImpl, newConnectorStatsImpl } from './connectorStats';\nimport { _ConnectorInstance, ConnectorInstance, ConnectorInstanceImpl, newConnectorInstanceImpl } from './connectorInstance';\nimport { _OperationalStatus, OperationalStatus, OperationalStatusImpl, newOperationalStatusImpl } from './operationalStatus';\nimport { _ApplicationService, ApplicationService, ApplicationServiceImpl, newApplicationServiceImpl } from './applicationService';\n\n\n/**\n * Status information pertaining to a Connector\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConnectorStatus { \n    /**\n     * The list of application services associated with this secure agent\n     */\n    application_services?: Array<ApplicationService>;\n    /**\n     * Service account user GUID used to deploy the connector\n     */\n    readonly service_account_id?: string;\n    stats?: ConnectorStats;\n    /**\n     * Number of ConnectorInstances that have been created for this connector_id lifetime.\n     */\n    num_instances_lifetime?: number;\n    /**\n     * The list of connector instances\n     */\n    instances?: Array<ConnectorInstance>;\n    operational_status?: OperationalStatus;\n}\n\nexport interface ConnectorStatus extends _ConnectorStatus {\n    _builtin_original?: _ConnectorStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorStatusImpl  implements _ConnectorStatus {\n    _builtin_original?: _ConnectorStatus = undefined;\n    public application_services: Array<ApplicationService>  | undefined ;\n    public readonly service_account_id: string  | undefined ;\n    public stats: ConnectorStats  | undefined ;\n    public num_instances_lifetime: number  | undefined ;\n    public instances: Array<ConnectorInstance>  | undefined ;\n    public operational_status: OperationalStatus  | undefined ;\n    constructor(base: _ConnectorStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'application_services') >= 0) {\n            if (base.application_services) {\n                this.application_services = base.application_services.map((original) => newApplicationServiceImpl(original));\n            } else {\n                this.application_services = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'service_account_id') >= 0) {\n            this.service_account_id = base.service_account_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'stats') >= 0) {\n            this.stats = base.stats;\n        }\n        if (Object.keys(base).findIndex(key => key === 'num_instances_lifetime') >= 0) {\n            this.num_instances_lifetime = base.num_instances_lifetime;\n        }\n        if (Object.keys(base).findIndex(key => key === 'instances') >= 0) {\n            if (base.instances) {\n                this.instances = base.instances.map((original) => newConnectorInstanceImpl(original));\n            } else {\n                this.instances = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'operational_status') >= 0) {\n            this.operational_status = base.operational_status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.application_services !== undefined) {\n            for (const item of this.application_services) {\n                if (item !== undefined && (item as ApplicationServiceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationServiceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.instances !== undefined) {\n            for (const item of this.instances) {\n                if (item !== undefined && (item as ConnectorInstanceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ConnectorInstanceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newConnectorStatusImpl(base: _ConnectorStatus): ConnectorStatusImpl {\n    return new ConnectorStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * System stats common to all connectors \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConnectorSystemStats { \n    /**\n     * The version of the operating system on which the Connector is running.\n     */\n    os_version?: string;\n    /**\n     * The length of time, in seconds, the operating system has been running.\n     */\n    os_uptime?: number;\n    /**\n     * The hostname of the computer on which the Connector is running.\n     */\n    hostname?: string;\n    /**\n     * The version of software currently running for this Connector. This includes both the version number and the commit reference from which it was built. \n     */\n    version?: string;\n    /**\n     * The date-time when the connector last updated its running configuration from the API. \n     */\n    config_update_time?: Date;\n    /**\n     * The connector_instance_id (if applicable). \n     */\n    connector_instance_id?: string;\n}\n\nexport interface ConnectorSystemStats extends _ConnectorSystemStats {\n    _builtin_original?: _ConnectorSystemStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorSystemStatsImpl  implements _ConnectorSystemStats {\n    _builtin_original?: _ConnectorSystemStats = undefined;\n    public os_version: string  | undefined ;\n    public os_uptime: number  | undefined ;\n    public hostname: string  | undefined ;\n    public version: string  | undefined ;\n    public config_update_time: Date  | undefined ;\n    public connector_instance_id: string  | undefined ;\n    constructor(base: _ConnectorSystemStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'os_version') >= 0) {\n            this.os_version = base.os_version;\n        }\n        if (Object.keys(base).findIndex(key => key === 'os_uptime') >= 0) {\n            this.os_uptime = base.os_uptime;\n        }\n        if (Object.keys(base).findIndex(key => key === 'hostname') >= 0) {\n            this.hostname = base.hostname;\n        }\n        if (Object.keys(base).findIndex(key => key === 'version') >= 0) {\n            this.version = base.version;\n        }\n        if (Object.keys(base).findIndex(key => key === 'config_update_time') >= 0) {\n            this.config_update_time = base.config_update_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_instance_id') >= 0) {\n            this.connector_instance_id = base.connector_instance_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newConnectorSystemStatsImpl(base: _ConnectorSystemStats): ConnectorSystemStatsImpl {\n    return new ConnectorSystemStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ApplicationServiceStatsPublish, ApplicationServiceStatsPublish, ApplicationServiceStatsPublishImpl, newApplicationServiceStatsPublishImpl } from './applicationServiceStatsPublish';\nimport { _ApplicationServiceCommonStats, ApplicationServiceCommonStats, ApplicationServiceCommonStatsImpl, newApplicationServiceCommonStatsImpl } from './applicationServiceCommonStats';\n\n\n/**\n * Published upstream statistics for a connector instance\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ConnectorUpstreamStatsPublish { \n    upstream_totals: ApplicationServiceCommonStats;\n    /**\n     * The stats for all ip upstreams of a connector instance. \n     */\n    ip_upstream_stats: Array<ApplicationServiceStatsPublish>;\n    /**\n     * The stats for all database upstreams of a connector instance. \n     */\n    database_upstream_stats?: Array<ApplicationServiceStatsPublish>;\n    /**\n     * The stats for all ssh upstreams of a connector instance. \n     */\n    ssh_upstream_stats: Array<ApplicationServiceStatsPublish>;\n    /**\n     * The stats for all desktop upstreams of a connector instance. \n     */\n    desktop_upstream_stats: Array<ApplicationServiceStatsPublish>;\n    /**\n     * The stats for all share upstreams of a connector instance. \n     */\n    share_upstream_stats: Array<ApplicationServiceStatsPublish>;\n}\n\nexport interface ConnectorUpstreamStatsPublish extends _ConnectorUpstreamStatsPublish {\n    _builtin_original?: _ConnectorUpstreamStatsPublish;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ConnectorUpstreamStatsPublishImpl  implements _ConnectorUpstreamStatsPublish {\n    _builtin_original?: _ConnectorUpstreamStatsPublish = undefined;\n    public upstream_totals: ApplicationServiceCommonStats ;\n    public ip_upstream_stats: Array<ApplicationServiceStatsPublish> ;\n    public database_upstream_stats: Array<ApplicationServiceStatsPublish>  | undefined ;\n    public ssh_upstream_stats: Array<ApplicationServiceStatsPublish> ;\n    public desktop_upstream_stats: Array<ApplicationServiceStatsPublish> ;\n    public share_upstream_stats: Array<ApplicationServiceStatsPublish> ;\n    constructor(base: _ConnectorUpstreamStatsPublish) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'upstream_totals') >= 0) {\n            this.upstream_totals = base.upstream_totals;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ip_upstream_stats') >= 0) {\n            if (base.ip_upstream_stats) {\n                this.ip_upstream_stats = base.ip_upstream_stats.map((original) => newApplicationServiceStatsPublishImpl(original));\n            } else {\n                this.ip_upstream_stats = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'database_upstream_stats') >= 0) {\n            if (base.database_upstream_stats) {\n                this.database_upstream_stats = base.database_upstream_stats.map((original) => newApplicationServiceStatsPublishImpl(original));\n            } else {\n                this.database_upstream_stats = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'ssh_upstream_stats') >= 0) {\n            if (base.ssh_upstream_stats) {\n                this.ssh_upstream_stats = base.ssh_upstream_stats.map((original) => newApplicationServiceStatsPublishImpl(original));\n            } else {\n                this.ssh_upstream_stats = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'desktop_upstream_stats') >= 0) {\n            if (base.desktop_upstream_stats) {\n                this.desktop_upstream_stats = base.desktop_upstream_stats.map((original) => newApplicationServiceStatsPublishImpl(original));\n            } else {\n                this.desktop_upstream_stats = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'share_upstream_stats') >= 0) {\n            if (base.share_upstream_stats) {\n                this.share_upstream_stats = base.share_upstream_stats.map((original) => newApplicationServiceStatsPublishImpl(original));\n            } else {\n                this.share_upstream_stats = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.ip_upstream_stats !== undefined) {\n            for (const item of this.ip_upstream_stats) {\n                if (item !== undefined && (item as ApplicationServiceStatsPublishImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationServiceStatsPublishImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.database_upstream_stats !== undefined) {\n            for (const item of this.database_upstream_stats) {\n                if (item !== undefined && (item as ApplicationServiceStatsPublishImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationServiceStatsPublishImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.ssh_upstream_stats !== undefined) {\n            for (const item of this.ssh_upstream_stats) {\n                if (item !== undefined && (item as ApplicationServiceStatsPublishImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationServiceStatsPublishImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.desktop_upstream_stats !== undefined) {\n            for (const item of this.desktop_upstream_stats) {\n                if (item !== undefined && (item as ApplicationServiceStatsPublishImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationServiceStatsPublishImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.share_upstream_stats !== undefined) {\n            for (const item of this.share_upstream_stats) {\n                if (item !== undefined && (item as ApplicationServiceStatsPublishImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationServiceStatsPublishImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newConnectorUpstreamStatsPublishImpl(base: _ConnectorUpstreamStatsPublish): ConnectorUpstreamStatsPublishImpl {\n    return new ConnectorUpstreamStatsPublishImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Controls how the client should interpret the media type of the response (e.g. as determined from the Content-Type header). Corresponds to to the X-Content-Type-Options header. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ContentTypeOptionsSettings { \n    /**\n     * Whether to apply the ContentTypeOptionsSettings. If false, no settings will be applied. Settings applied by the application itself will take effect. \n     */\n    enabled: boolean;\n    /**\n     * Controls the value of the X-Content-Type-Options header. - `nosniff`: Blocks the request if it doesn\\'t align with the destination element. Also enables   Cross-Origin Read Blocking (CORB) protection for certain mime types. - `clear`: Removes the X-Content-Type-Options header from the server\\'s response if present. - `override`: Use the value specified in the override field. If it is not present, the   header will be set to an empty string. \n     */\n    mode: ContentTypeOptionsSettings.ModeEnum;\n    /**\n     * Set a specific value for the X-Content-Type-Options header.\n     */\n    override?: string | null;\n}\n\nexport interface ContentTypeOptionsSettings extends _ContentTypeOptionsSettings {\n    _builtin_original?: _ContentTypeOptionsSettings;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ContentTypeOptionsSettingsImpl  implements _ContentTypeOptionsSettings {\n    _builtin_original?: _ContentTypeOptionsSettings = undefined;\n    public enabled: boolean ;\n    public mode: ContentTypeOptionsSettings.ModeEnum ;\n    public override: string | null  | undefined ;\n    constructor(base: _ContentTypeOptionsSettings) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mode') >= 0) {\n            this.mode = base.mode;\n        }\n        if (Object.keys(base).findIndex(key => key === 'override') >= 0) {\n            this.override = base.override;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace ContentTypeOptionsSettings {\n    export type ModeEnum = 'nosniff' | 'clear' | 'override';\n    export const ModeEnum = {\n        nosniff: 'nosniff' as ModeEnum,\n        clear: 'clear' as ModeEnum,\n        override: 'override' as ModeEnum\n    };\n}\n\n\nexport function newContentTypeOptionsSettingsImpl(base: _ContentTypeOptionsSettings): ContentTypeOptionsSettingsImpl {\n    return new ContentTypeOptionsSettingsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * CPU info \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CpuInfo { \n    /**\n     * The CPU architecture\n     */\n    architecture?: string;\n    /**\n     * The CPU vendor\n     */\n    vendor?: string;\n    /**\n     * The CPU model\n     */\n    model?: string;\n    /**\n     * The CPU speed, in Mhz.\n     */\n    speed?: number;\n    /**\n     * The CPU cache size in KBs.\n     */\n    cache?: number;\n    /**\n     * The number of CPUs\n     */\n    cpus?: number;\n    /**\n     * The number of CPU cores\n     */\n    cores?: number;\n    /**\n     * The number of CPU threads\n     */\n    threads?: number;\n    /**\n     * The CPU endianess\n     */\n    endian?: CpuInfo.EndianEnum;\n}\n\nexport interface CpuInfo extends _CpuInfo {\n    _builtin_original?: _CpuInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CpuInfoImpl  implements _CpuInfo {\n    _builtin_original?: _CpuInfo = undefined;\n    public architecture: string  | undefined ;\n    public vendor: string  | undefined ;\n    public model: string  | undefined ;\n    public speed: number  | undefined ;\n    public cache: number  | undefined ;\n    public cpus: number  | undefined ;\n    public cores: number  | undefined ;\n    public threads: number  | undefined ;\n    public endian: CpuInfo.EndianEnum  | undefined ;\n    constructor(base: _CpuInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'architecture') >= 0) {\n            this.architecture = base.architecture;\n        }\n        if (Object.keys(base).findIndex(key => key === 'vendor') >= 0) {\n            this.vendor = base.vendor;\n        }\n        if (Object.keys(base).findIndex(key => key === 'model') >= 0) {\n            this.model = base.model;\n        }\n        if (Object.keys(base).findIndex(key => key === 'speed') >= 0) {\n            this.speed = base.speed;\n        }\n        if (Object.keys(base).findIndex(key => key === 'cache') >= 0) {\n            this.cache = base.cache;\n        }\n        if (Object.keys(base).findIndex(key => key === 'cpus') >= 0) {\n            this.cpus = base.cpus;\n        }\n        if (Object.keys(base).findIndex(key => key === 'cores') >= 0) {\n            this.cores = base.cores;\n        }\n        if (Object.keys(base).findIndex(key => key === 'threads') >= 0) {\n            this.threads = base.threads;\n        }\n        if (Object.keys(base).findIndex(key => key === 'endian') >= 0) {\n            this.endian = base.endian;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace CpuInfo {\n    export type EndianEnum = 'big' | 'little';\n    export const EndianEnum = {\n        big: 'big' as EndianEnum,\n        little: 'little' as EndianEnum\n    };\n}\n\n\nexport function newCpuInfoImpl(base: _CpuInfo): CpuInfoImpl {\n    return new CpuInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * create a checkout session options\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CreateBillingCheckoutSession { \n    /**\n     * The ui_mode. When ommited, defaults to embedded.\n     */\n    ui_mode?: string;\n    /**\n     * The return url.\n     */\n    return_url?: string;\n    /**\n     * The success_url.\n     */\n    success_url?: string;\n    /**\n     * custom text\n     */\n    custom_text?: string;\n}\n\nexport interface CreateBillingCheckoutSession extends _CreateBillingCheckoutSession {\n    _builtin_original?: _CreateBillingCheckoutSession;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CreateBillingCheckoutSessionImpl  implements _CreateBillingCheckoutSession {\n    _builtin_original?: _CreateBillingCheckoutSession = undefined;\n    public ui_mode: string  | undefined ;\n    public return_url: string  | undefined ;\n    public success_url: string  | undefined ;\n    public custom_text: string  | undefined ;\n    constructor(base: _CreateBillingCheckoutSession) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'ui_mode') >= 0) {\n            this.ui_mode = base.ui_mode;\n        }\n        if (Object.keys(base).findIndex(key => key === 'return_url') >= 0) {\n            this.return_url = base.return_url;\n        }\n        if (Object.keys(base).findIndex(key => key === 'success_url') >= 0) {\n            this.success_url = base.success_url;\n        }\n        if (Object.keys(base).findIndex(key => key === 'custom_text') >= 0) {\n            this.custom_text = base.custom_text;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newCreateBillingCheckoutSessionImpl(base: _CreateBillingCheckoutSession): CreateBillingCheckoutSessionImpl {\n    return new CreateBillingCheckoutSessionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _BillingUsageRecord, BillingUsageRecord, BillingUsageRecordImpl, newBillingUsageRecordImpl } from './billingUsageRecord';\n\n\n/**\n * Object for creating usage record for a billing account. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CreateBillingUsageRecords { \n    /**\n     * When true, the actual usage record is not written to the backend billing database. This is useful to determine what the resulting record would be written as. \n     */\n    dry_run?: boolean;\n    /**\n     * List of billing records\n     */\n    usage_records?: Array<BillingUsageRecord>;\n}\n\nexport interface CreateBillingUsageRecords extends _CreateBillingUsageRecords {\n    _builtin_original?: _CreateBillingUsageRecords;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CreateBillingUsageRecordsImpl  implements _CreateBillingUsageRecords {\n    _builtin_original?: _CreateBillingUsageRecords = undefined;\n    public dry_run: boolean  | undefined ;\n    public usage_records: Array<BillingUsageRecord>  | undefined ;\n    constructor(base: _CreateBillingUsageRecords) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'dry_run') >= 0) {\n            this.dry_run = base.dry_run;\n        }\n        if (Object.keys(base).findIndex(key => key === 'usage_records') >= 0) {\n            if (base.usage_records) {\n                this.usage_records = base.usage_records.map((original) => newBillingUsageRecordImpl(original));\n            } else {\n                this.usage_records = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.usage_records !== undefined) {\n            for (const item of this.usage_records) {\n                if (item !== undefined && (item as BillingUsageRecordImpl)._remove_builtin_extensions !== undefined) {\n                    (item as BillingUsageRecordImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newCreateBillingUsageRecordsImpl(base: _CreateBillingUsageRecords): CreateBillingUsageRecordsImpl {\n    return new CreateBillingUsageRecordsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _CreateTokenRequest, CreateTokenRequest, CreateTokenRequestImpl, newCreateTokenRequestImpl } from './createTokenRequest';\nimport { _Session, Session, SessionImpl, newSessionImpl } from './session';\n\n\n/**\n * A request to create a session and a token associated with the session\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CreateSessionAndTokenRequest { \n    create_token_request: CreateTokenRequest;\n    session: Session;\n}\n\nexport interface CreateSessionAndTokenRequest extends _CreateSessionAndTokenRequest {\n    _builtin_original?: _CreateSessionAndTokenRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CreateSessionAndTokenRequestImpl  implements _CreateSessionAndTokenRequest {\n    _builtin_original?: _CreateSessionAndTokenRequest = undefined;\n    public create_token_request: CreateTokenRequest ;\n    public session: Session ;\n    constructor(base: _CreateSessionAndTokenRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'create_token_request') >= 0) {\n            this.create_token_request = base.create_token_request;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session') >= 0) {\n            this.session = base.session;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newCreateSessionAndTokenRequestImpl(base: _CreateSessionAndTokenRequest): CreateSessionAndTokenRequestImpl {\n    return new CreateSessionAndTokenRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RawToken, RawToken, RawTokenImpl, newRawTokenImpl } from './rawToken';\nimport { _Session, Session, SessionImpl, newSessionImpl } from './session';\n\n\n/**\n * The response object for creating a session and associated token\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CreateSessionAndTokenResponse { \n    token?: RawToken;\n    session?: Session;\n}\n\nexport interface CreateSessionAndTokenResponse extends _CreateSessionAndTokenResponse {\n    _builtin_original?: _CreateSessionAndTokenResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CreateSessionAndTokenResponseImpl  implements _CreateSessionAndTokenResponse {\n    _builtin_original?: _CreateSessionAndTokenResponse = undefined;\n    public token: RawToken  | undefined ;\n    public session: Session  | undefined ;\n    constructor(base: _CreateSessionAndTokenResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'token') >= 0) {\n            this.token = base.token;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session') >= 0) {\n            this.session = base.session;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newCreateSessionAndTokenResponseImpl(base: _CreateSessionAndTokenResponse): CreateSessionAndTokenResponseImpl {\n    return new CreateSessionAndTokenResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _HostPermissions, HostPermissions, HostPermissionsImpl, newHostPermissionsImpl } from './hostPermissions';\nimport { _TokenValidity, TokenValidity, TokenValidityImpl, newTokenValidityImpl } from './tokenValidity';\nimport { _TimeValidity, TimeValidity, TimeValidityImpl, newTimeValidityImpl } from './timeValidity';\n\n\n/**\n * Request object to create a token\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CreateTokenRequest { \n    /**\n     * Unique identifier\n     */\n    sub: string;\n    /**\n     * Unique identifier\n     */\n    org: string;\n    /**\n     * associative mapping of an application to a role\n     */\n    roles?: { [key: string]: string | undefined; };\n    /**\n     * array of audiences\n     */\n    audiences: Array<string>;\n    time_validity: TimeValidity;\n    /**\n     * array of valid hosts\n     */\n    hosts?: Array<HostPermissions>;\n    token_validity?: TokenValidity;\n    /**\n     * Unique identifier\n     */\n    session?: string;\n    /**\n     * The list of scopes requested for the access token. Multiple scopes are seperated by a space character. Ex. urn:agilicus:users urn:agilicus:issuers. An optional is specified with an ? at the end. Optional scopes are used when the permission is requested but not required. Ex. urn:agilicus:users?\n     */\n    scopes?: Array<string>;\n    /**\n     * When session is not provided, this option controls if the session applied to the token should come from the token making the token create request. This option is normally True, so that all tokens are chained together using the same session. This would normally be set to False when creating system orientated tokens so that they have no session, and subsequently, tokens created with this sessionless token will also not contain an inherited token (unless of course it was created with the session in the payload of the request). \n     */\n    inherit_session?: boolean;\n    /**\n     * If true, also create and return a refresh token that allows the created token to be specifically refreshed. \n     */\n    create_refresh_token?: boolean;\n    /**\n     * If true, the Raw token will also return the user record \n     */\n    get_user?: boolean;\n}\n\nexport interface CreateTokenRequest extends _CreateTokenRequest {\n    _builtin_original?: _CreateTokenRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CreateTokenRequestImpl  implements _CreateTokenRequest {\n    _builtin_original?: _CreateTokenRequest = undefined;\n    public sub: string ;\n    public org: string ;\n    public roles: { [key: string]: string | undefined; }  | undefined ;\n    public audiences: Array<string> ;\n    public time_validity: TimeValidity ;\n    public hosts: Array<HostPermissions>  | undefined ;\n    public token_validity: TokenValidity  | undefined ;\n    public session: string  | undefined ;\n    public scopes: Array<string>  | undefined ;\n    public inherit_session: boolean  | undefined ;\n    public create_refresh_token: boolean  | undefined ;\n    public get_user: boolean  | undefined ;\n    constructor(base: _CreateTokenRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'sub') >= 0) {\n            this.sub = base.sub;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org') >= 0) {\n            this.org = base.org;\n        }\n        if (Object.keys(base).findIndex(key => key === 'roles') >= 0) {\n            this.roles = base.roles;\n        }\n        if (Object.keys(base).findIndex(key => key === 'audiences') >= 0) {\n            this.audiences = base.audiences;\n        }\n        if (Object.keys(base).findIndex(key => key === 'time_validity') >= 0) {\n            this.time_validity = base.time_validity;\n        }\n        if (Object.keys(base).findIndex(key => key === 'hosts') >= 0) {\n            if (base.hosts) {\n                this.hosts = base.hosts.map((original) => newHostPermissionsImpl(original));\n            } else {\n                this.hosts = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_validity') >= 0) {\n            this.token_validity = base.token_validity;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session') >= 0) {\n            this.session = base.session;\n        }\n        if (Object.keys(base).findIndex(key => key === 'scopes') >= 0) {\n            this.scopes = base.scopes;\n        }\n        if (Object.keys(base).findIndex(key => key === 'inherit_session') >= 0) {\n            this.inherit_session = base.inherit_session;\n        }\n        if (Object.keys(base).findIndex(key => key === 'create_refresh_token') >= 0) {\n            this.create_refresh_token = base.create_refresh_token;\n        }\n        if (Object.keys(base).findIndex(key => key === 'get_user') >= 0) {\n            this.get_user = base.get_user;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.hosts !== undefined) {\n            for (const item of this.hosts) {\n                if (item !== undefined && (item as HostPermissionsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as HostPermissionsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newCreateTokenRequestImpl(base: _CreateTokenRequest): CreateTokenRequestImpl {\n    return new CreateTokenRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _TokenValidity, TokenValidity, TokenValidityImpl, newTokenValidityImpl } from './tokenValidity';\n\n\n/**\n * Request object to create a User Data Token\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CreateUserDataTokenRequest { \n    /**\n     * array of audiences\n     */\n    audiences?: Array<string>;\n    token_validity?: TokenValidity;\n    /**\n     * User data added to token that will be signed.\n     */\n    user_data?: object;\n}\n\nexport interface CreateUserDataTokenRequest extends _CreateUserDataTokenRequest {\n    _builtin_original?: _CreateUserDataTokenRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CreateUserDataTokenRequestImpl  implements _CreateUserDataTokenRequest {\n    _builtin_original?: _CreateUserDataTokenRequest = undefined;\n    public audiences: Array<string>  | undefined ;\n    public token_validity: TokenValidity  | undefined ;\n    public user_data: object  | undefined ;\n    constructor(base: _CreateUserDataTokenRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'audiences') >= 0) {\n            this.audiences = base.audiences;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token_validity') >= 0) {\n            this.token_validity = base.token_validity;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_data') >= 0) {\n            this.user_data = base.user_data;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newCreateUserDataTokenRequestImpl(base: _CreateUserDataTokenRequest): CreateUserDataTokenRequestImpl {\n    return new CreateUserDataTokenRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Controls the Cross Origin Embedder Policy (COEP) for the site. Corresponds to the Cross-Origin-Embedder-Policy header. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CrossOriginEmbedderPolicySettings { \n    /**\n     * Whether to apply the CrossOriginEmbedderPolicySettings. If false, no settings will be applied. Settings applied by the application itself will take effect. \n     */\n    enabled: boolean;\n    /**\n     * Controls the value of the Cross-Origin-Embedder-Policy header. - `unsafe_none`: Allows fetching of cross-origin resources without having explicit permission   to do so via CORS (Cross Origin Resource Sharing) or CORP (Cross Origin Resource Policy). This is the default. - `require_corp`: Can only fetch and load resources from the same origin, or which have been    marked as loadable from a different origin. Either a crossorigin attribute in conjunction    with CORS, or permission from the CORP must be given in order to    load the resource. - `clear`: Removes the Cross-Origin-Embedder-Policy header from the server\\'s response if present. - `override`: Use the value specified in the override field. If it is not present, the   header will be set to an empty string. \n     */\n    mode: CrossOriginEmbedderPolicySettings.ModeEnum;\n    /**\n     * Set a specific value for the Cross-Origin-Embedder-Policy header.\n     */\n    override?: string | null;\n}\n\nexport interface CrossOriginEmbedderPolicySettings extends _CrossOriginEmbedderPolicySettings {\n    _builtin_original?: _CrossOriginEmbedderPolicySettings;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CrossOriginEmbedderPolicySettingsImpl  implements _CrossOriginEmbedderPolicySettings {\n    _builtin_original?: _CrossOriginEmbedderPolicySettings = undefined;\n    public enabled: boolean ;\n    public mode: CrossOriginEmbedderPolicySettings.ModeEnum ;\n    public override: string | null  | undefined ;\n    constructor(base: _CrossOriginEmbedderPolicySettings) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mode') >= 0) {\n            this.mode = base.mode;\n        }\n        if (Object.keys(base).findIndex(key => key === 'override') >= 0) {\n            this.override = base.override;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace CrossOriginEmbedderPolicySettings {\n    export type ModeEnum = 'unsafe_none' | 'require_corp' | 'clear' | 'override';\n    export const ModeEnum = {\n        unsafe_none: 'unsafe_none' as ModeEnum,\n        require_corp: 'require_corp' as ModeEnum,\n        clear: 'clear' as ModeEnum,\n        override: 'override' as ModeEnum\n    };\n}\n\n\nexport function newCrossOriginEmbedderPolicySettingsImpl(base: _CrossOriginEmbedderPolicySettings): CrossOriginEmbedderPolicySettingsImpl {\n    return new CrossOriginEmbedderPolicySettingsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Controls the Cross Origin Opener Policy (COOP) for the site. Corresponds to the Cross-Origin-Opener-Policy header. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CrossOriginOpenerPolicySettings { \n    /**\n     * Whether to apply the CrossOriginOpenerPolicySettings.  If false, no settings will be applied. Settings applied by the application itself will take effect. \n     */\n    enabled: boolean;\n    /**\n     * Controls the value of the Cross-Origin-Opener-Policy header. - `unsafe_none`: Allows the document to be be added to the popup\\'s context, unless the opening   document has `same_origin` or `same_origin_allow_popups`. This is the default. - `same_origin_allow_popups`: Allows documents which don\\'t have COOP, or set it to `unsafe_none`    to reference this document from their windows or tabs.    load the resource. - `same_origin`: Only documents from the same origin can reference this one. - `clear`: Removes the Cross-Origin-Opener-Policy  header from the server\\'s response if present. - `override`: Use the value specified in the override field. If it is not present, the   header will be set to an empty string. \n     */\n    mode: CrossOriginOpenerPolicySettings.ModeEnum;\n    /**\n     * Set a specific value for the Cross-Origin-Opener-Policy header.\n     */\n    override?: string | null;\n}\n\nexport interface CrossOriginOpenerPolicySettings extends _CrossOriginOpenerPolicySettings {\n    _builtin_original?: _CrossOriginOpenerPolicySettings;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CrossOriginOpenerPolicySettingsImpl  implements _CrossOriginOpenerPolicySettings {\n    _builtin_original?: _CrossOriginOpenerPolicySettings = undefined;\n    public enabled: boolean ;\n    public mode: CrossOriginOpenerPolicySettings.ModeEnum ;\n    public override: string | null  | undefined ;\n    constructor(base: _CrossOriginOpenerPolicySettings) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mode') >= 0) {\n            this.mode = base.mode;\n        }\n        if (Object.keys(base).findIndex(key => key === 'override') >= 0) {\n            this.override = base.override;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace CrossOriginOpenerPolicySettings {\n    export type ModeEnum = 'unsafe_none' | 'same_origin_allow_popups' | 'same_origin' | 'clear' | 'override';\n    export const ModeEnum = {\n        unsafe_none: 'unsafe_none' as ModeEnum,\n        same_origin_allow_popups: 'same_origin_allow_popups' as ModeEnum,\n        same_origin: 'same_origin' as ModeEnum,\n        clear: 'clear' as ModeEnum,\n        override: 'override' as ModeEnum\n    };\n}\n\n\nexport function newCrossOriginOpenerPolicySettingsImpl(base: _CrossOriginOpenerPolicySettings): CrossOriginOpenerPolicySettingsImpl {\n    return new CrossOriginOpenerPolicySettingsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Controls the Cross Origin Resource Policy (CORP) for the site. Corresponds to the Cross-Origin-Resource-Policy header. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CrossOriginResourcePolicySettings { \n    /**\n     * Whether to apply the CrossOriginResourcePolicySettings. If false, no settings will be applied. Settings applied by the application itself will take effect. \n     */\n    enabled: boolean;\n    /**\n     * Controls the value of the Cross-Origin-Resource-Policy header. - `same_site`: Requests from the same site can read the resource. Note that this is different than `same_origin`.   For example, \\\"https://example.com\\\" is the same site as \\\"https://my-app.example.com\\\". - `same_origin`: Only requests from the same origin can read the resource. - `cross_origin`: Requests from any origin can read the resource. - `clear`: Removes the Cross-Origin-Resource-Policy  header from the server\\'s response if present. - `override`: Use the value specified in the override field. If it is not present, the   header will be set to an empty string. \n     */\n    mode: CrossOriginResourcePolicySettings.ModeEnum;\n    /**\n     * Set a specific value for the Cross-Origin-Resource-Policy header.\n     */\n    override?: string | null;\n}\n\nexport interface CrossOriginResourcePolicySettings extends _CrossOriginResourcePolicySettings {\n    _builtin_original?: _CrossOriginResourcePolicySettings;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CrossOriginResourcePolicySettingsImpl  implements _CrossOriginResourcePolicySettings {\n    _builtin_original?: _CrossOriginResourcePolicySettings = undefined;\n    public enabled: boolean ;\n    public mode: CrossOriginResourcePolicySettings.ModeEnum ;\n    public override: string | null  | undefined ;\n    constructor(base: _CrossOriginResourcePolicySettings) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mode') >= 0) {\n            this.mode = base.mode;\n        }\n        if (Object.keys(base).findIndex(key => key === 'override') >= 0) {\n            this.override = base.override;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace CrossOriginResourcePolicySettings {\n    export type ModeEnum = 'same_site' | 'same_origin' | 'cross_origin' | 'clear' | 'override';\n    export const ModeEnum = {\n        same_site: 'same_site' as ModeEnum,\n        same_origin: 'same_origin' as ModeEnum,\n        cross_origin: 'cross_origin' as ModeEnum,\n        clear: 'clear' as ModeEnum,\n        override: 'override' as ModeEnum\n    };\n}\n\n\nexport function newCrossOriginResourcePolicySettingsImpl(base: _CrossOriginResourcePolicySettings): CrossOriginResourcePolicySettingsImpl {\n    return new CrossOriginResourcePolicySettingsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A single config item for a desktop config file. How this is serialized depends on the desktop type. For example, it will be serliazed to: {key}:{config_type}:{value} for RDP, for example. Note that, depending on the type of the desktop, some keys are reserved. Trying to set or clear a reserved key is prohibited. For RDP, the reserved keys are:   - `full address`   - `gatewayhostname`   - `gatewaycredentialsource`   - `gatewayusagemethod`   - `gatewayprofileusagemethod`   - `conncetion type`   - `gatewayaccesstoken`   - `remoteapplicationprogram`   - `remoteapplicationprogram`   - `remoteapplicationcmdline`   - `remoteapplicationmode`   - `remoteapplicationexpandcmdline`   - `remoteapplicationexpandworkingdir`   - `remoteapplicationfile`   - `remoteapplicationname` \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DesktopClientConfigItem { \n    /**\n     * The key of the config in the rdp file.\n     */\n    key: string;\n    /**\n     * The type of the config in the rdp file. Tells the system how to interpret the value.\n     */\n    config_type: string;\n    /**\n     * The value of the config item. Note that it may be empty.\n     */\n    value: string;\n    /**\n     * Whether to set of clear the item. If the item is cleared, it will be removed from the config file entirely, meaning that the system defaults will take effect. Note that in this case `value` and `config_type` are irrelevant. \n     */\n    operation: DesktopClientConfigItem.OperationEnum;\n}\n\nexport interface DesktopClientConfigItem extends _DesktopClientConfigItem {\n    _builtin_original?: _DesktopClientConfigItem;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DesktopClientConfigItemImpl  implements _DesktopClientConfigItem {\n    _builtin_original?: _DesktopClientConfigItem = undefined;\n    public key: string ;\n    public config_type: string ;\n    public value: string ;\n    public operation: DesktopClientConfigItem.OperationEnum ;\n    constructor(base: _DesktopClientConfigItem) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'key') >= 0) {\n            this.key = base.key;\n        }\n        if (Object.keys(base).findIndex(key => key === 'config_type') >= 0) {\n            this.config_type = base.config_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'value') >= 0) {\n            this.value = base.value;\n        }\n        if (Object.keys(base).findIndex(key => key === 'operation') >= 0) {\n            this.operation = base.operation;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace DesktopClientConfigItem {\n    export type OperationEnum = 'set' | 'clear';\n    export const OperationEnum = {\n        set: 'set' as OperationEnum,\n        clear: 'clear' as OperationEnum\n    };\n}\n\n\nexport function newDesktopClientConfigItemImpl(base: _DesktopClientConfigItem): DesktopClientConfigItemImpl {\n    return new DesktopClientConfigItemImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _DesktopClientConfigItem, DesktopClientConfigItem, DesktopClientConfigItemImpl, newDesktopClientConfigItemImpl } from './desktopClientConfigItem';\n\n\n/**\n * Allows changing the behaviour of the system-generated Desktop Configuration file. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _CustomDesktopClientConfig { \n    /**\n     * The Desktop Config overrides to apply. Any duplicates will be resolved by taking the last item in the list. \n     */\n    config_items: Array<DesktopClientConfigItem>;\n}\n\nexport interface CustomDesktopClientConfig extends _CustomDesktopClientConfig {\n    _builtin_original?: _CustomDesktopClientConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class CustomDesktopClientConfigImpl  implements _CustomDesktopClientConfig {\n    _builtin_original?: _CustomDesktopClientConfig = undefined;\n    public config_items: Array<DesktopClientConfigItem> ;\n    constructor(base: _CustomDesktopClientConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'config_items') >= 0) {\n            if (base.config_items) {\n                this.config_items = base.config_items.map((original) => newDesktopClientConfigItemImpl(original));\n            } else {\n                this.config_items = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.config_items !== undefined) {\n            for (const item of this.config_items) {\n                if (item !== undefined && (item as DesktopClientConfigItemImpl)._remove_builtin_extensions !== undefined) {\n                    (item as DesktopClientConfigItemImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newCustomDesktopClientConfigImpl(base: _CustomDesktopClientConfig): CustomDesktopClientConfigImpl {\n    return new CustomDesktopClientConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _NetworkServiceConfig, NetworkServiceConfig, NetworkServiceConfigImpl, newNetworkServiceConfigImpl } from './networkServiceConfig';\nimport { _ResourceConfig, ResourceConfig, ResourceConfigImpl, newResourceConfigImpl } from './resourceConfig';\n\n\n/**\n * The configurable properties of a DatabaseResource. A DatabaseResource is also a NetworkResource, so it must have a unique name across all NetworkResources. Note that the DatabaseResource must be associated with a Connector (via `connector_id`) in order for users to access it. If `connector_id` is empty, then the DatabaseResource cannot be accessed. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DatabaseResourceSpec { \n    /**\n     * The name of the DatabaseResource. This uniquely identifies the DatabaseResource within the organisation. It is used to build the domain name for the resource, so it must be a valid hostname. \n     */\n    name: string;\n    /**\n     * The hostname or IP of the DatabaseResource. The associated connector will proxy connections to the DatabaseResource\\'s domain to this address. \n     */\n    address: string;\n    /**\n     * The protocol of this database. The DatabaseResource will not translate between two different protocols, so both the client and server must use this protocol when communicating.  The DatabaseResource currently supports the following protocols:   - postgresql: The PostgreSQL database wire protocol, version 3. \n     */\n    database_protocol: string;\n    /**\n     * The name of the database to connect to. This will be used when first connecting to the database so that you know you\\'re accessing the right data. If provided, this will override the name of the database provided by the client. \n     */\n    data_source_name: string;\n    /**\n     * Extra runtime parameters which can override or extend the ones applied by the client. These will be serialized into the upstream connection depending on the version of the protocol. \n     */\n    runtime_parameters?: Array<string>;\n    config?: NetworkServiceConfig;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * Unique identifier\n     */\n    connector_id?: string;\n    /**\n     * A human readable slug to identify a resource and that is rfc1035 label compliant. The length has been restricted to 20 characters such that this name can be concatenated with other names or slugs. A slug is readOnly as it is generated by the backend resource. \n     */\n    name_slug?: string;\n    resource_config?: ResourceConfig;\n}\n\nexport interface DatabaseResourceSpec extends _DatabaseResourceSpec {\n    _builtin_original?: _DatabaseResourceSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DatabaseResourceSpecImpl  implements _DatabaseResourceSpec {\n    _builtin_original?: _DatabaseResourceSpec = undefined;\n    public name: string ;\n    public address: string ;\n    public database_protocol: string ;\n    public data_source_name: string ;\n    public runtime_parameters: Array<string>  | undefined ;\n    public config: NetworkServiceConfig  | undefined ;\n    public org_id: string ;\n    public connector_id: string  | undefined ;\n    public name_slug: string  | undefined ;\n    public resource_config: ResourceConfig  | undefined ;\n    constructor(base: _DatabaseResourceSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'address') >= 0) {\n            this.address = base.address;\n        }\n        if (Object.keys(base).findIndex(key => key === 'database_protocol') >= 0) {\n            this.database_protocol = base.database_protocol;\n        }\n        if (Object.keys(base).findIndex(key => key === 'data_source_name') >= 0) {\n            this.data_source_name = base.data_source_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'runtime_parameters') >= 0) {\n            this.runtime_parameters = base.runtime_parameters;\n        }\n        if (Object.keys(base).findIndex(key => key === 'config') >= 0) {\n            this.config = base.config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_id') >= 0) {\n            this.connector_id = base.connector_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name_slug') >= 0) {\n            this.name_slug = base.name_slug;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_config') >= 0) {\n            this.resource_config = base.resource_config;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDatabaseResourceSpecImpl(base: _DatabaseResourceSpec): DatabaseResourceSpecImpl {\n    return new DatabaseResourceSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourceStatsMetadata, ResourceStatsMetadata, ResourceStatsMetadataImpl, newResourceStatsMetadataImpl } from './resourceStatsMetadata';\nimport { _ResourceSessionStats, ResourceSessionStats, ResourceSessionStatsImpl, newResourceSessionStatsImpl } from './resourceSessionStats';\nimport { _ResourceStats, ResourceStats, ResourceStatsImpl, newResourceStatsImpl } from './resourceStats';\n\n\n/**\n * Stats for a DatabaseResource, including basic resource stats. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DatabaseResourceStats { \n    /**\n     * The unique ID of the resource. The id is provided here so that a list of resource stats can be POSTed in a single request. \n     */\n    resource_id?: string;\n    metadata?: ResourceStatsMetadata;\n    /**\n     * The summary status of the Resource. - A `good` status means that no action is neccessary on this Resource - A `warn` status means that there is an issue that should be dealt with   Examples include a forwarder resource that cannot bind to the provisioned port (eg. permission   issue binding to port 80) - A `down` status indicates that there is a service accessibility problem   that should be dealt with as soon as possible. This could mean that there is a   problem with the Resource\\'s configuration, or the platform. - A `stale` status indicates that although there may not be anything wrong,   we haven\\'t been able to update the status recently. This may indicate   a communications issue between Agilicus and the Connector containing the resource. \n     */\n    overall_status?: string;\n    /**\n     * A message pertaining to the last warning associated with the resource. This message is persistent in that it will remain when the status goes to `good`. \n     */\n    last_warning_message?: string;\n    session_stats?: ResourceSessionStats;\n}\n\nexport interface DatabaseResourceStats extends _DatabaseResourceStats {\n    _builtin_original?: _DatabaseResourceStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DatabaseResourceStatsImpl  implements _DatabaseResourceStats {\n    _builtin_original?: _DatabaseResourceStats = undefined;\n    public resource_id: string  | undefined ;\n    public metadata: ResourceStatsMetadata  | undefined ;\n    public overall_status: string  | undefined ;\n    public last_warning_message: string  | undefined ;\n    public session_stats: ResourceSessionStats  | undefined ;\n    constructor(base: _DatabaseResourceStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'resource_id') >= 0) {\n            this.resource_id = base.resource_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'overall_status') >= 0) {\n            this.overall_status = base.overall_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_warning_message') >= 0) {\n            this.last_warning_message = base.last_warning_message;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session_stats') >= 0) {\n            this.session_stats = base.session_stats;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDatabaseResourceStatsImpl(base: _DatabaseResourceStats): DatabaseResourceStatsImpl {\n    return new DatabaseResourceStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _DatabaseResourceStats, DatabaseResourceStats, DatabaseResourceStatsImpl, newDatabaseResourceStatsImpl } from './databaseResourceStats';\n\n\n/**\n * Derived, read-only properties of a DatabaseResource. Use these to determine how to interact with a DatabaseResource, or to see its current state. If you have not assigned the DatabaseResource to a Connector, then some of its status will not be availble. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DatabaseResourceStatus { \n    /**\n     * The base uri at which to access the gateway for this DatabaseResource. \n     */\n    gateway_uri?: string;\n    /**\n     * The URI by which this resource can be directly accessed. Depending on the type of connector associated with the resource, the URI could be public or internal to the Agilicus infrastructure. In both cases, valid credentials proving permission to access this service are necessary to access the service. If this field is empty, then it cannot be accessed directly. \n     */\n    connection_uri?: string;\n    stats?: DatabaseResourceStats;\n}\n\nexport interface DatabaseResourceStatus extends _DatabaseResourceStatus {\n    _builtin_original?: _DatabaseResourceStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DatabaseResourceStatusImpl  implements _DatabaseResourceStatus {\n    _builtin_original?: _DatabaseResourceStatus = undefined;\n    public gateway_uri: string  | undefined ;\n    public connection_uri: string  | undefined ;\n    public stats: DatabaseResourceStats  | undefined ;\n    constructor(base: _DatabaseResourceStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'gateway_uri') >= 0) {\n            this.gateway_uri = base.gateway_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connection_uri') >= 0) {\n            this.connection_uri = base.connection_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'stats') >= 0) {\n            this.stats = base.stats;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDatabaseResourceStatusImpl(base: _DatabaseResourceStatus): DatabaseResourceStatusImpl {\n    return new DatabaseResourceStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _DeploymentSpec, DeploymentSpec, DeploymentSpecImpl, newDeploymentSpecImpl } from './deploymentSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _DeploymentStatus, DeploymentStatus, DeploymentStatusImpl, newDeploymentStatusImpl } from './deploymentStatus';\n\n\n/**\n * A template deployment \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Deployment { \n    metadata?: MetadataWithId;\n    spec: DeploymentSpec;\n    status?: DeploymentStatus;\n}\n\nexport interface Deployment extends _Deployment {\n    _builtin_original?: _Deployment;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DeploymentImpl  implements _Deployment {\n    _builtin_original?: _Deployment = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: DeploymentSpec ;\n    public status: DeploymentStatus  | undefined ;\n    constructor(base: _Deployment) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDeploymentImpl(base: _Deployment): DeploymentImpl {\n    return new DeploymentImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _DeploymentInstanceSpec, DeploymentInstanceSpec, DeploymentInstanceSpecImpl, newDeploymentInstanceSpecImpl } from './deploymentInstanceSpec';\nimport { _DeploymentInstanceStatus, DeploymentInstanceStatus, DeploymentInstanceStatusImpl, newDeploymentInstanceStatusImpl } from './deploymentInstanceStatus';\n\n\n/**\n * A template instance \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DeploymentInstance { \n    metadata?: MetadataWithId;\n    spec: DeploymentInstanceSpec;\n    status?: DeploymentInstanceStatus;\n}\n\nexport interface DeploymentInstance extends _DeploymentInstance {\n    _builtin_original?: _DeploymentInstance;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DeploymentInstanceImpl  implements _DeploymentInstance {\n    _builtin_original?: _DeploymentInstance = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: DeploymentInstanceSpec ;\n    public status: DeploymentInstanceStatus  | undefined ;\n    constructor(base: _DeploymentInstance) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDeploymentInstanceImpl(base: _DeploymentInstance): DeploymentInstanceImpl {\n    return new DeploymentInstanceImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Deployment instance status \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DeploymentInstanceInput { \n    /**\n     * input value name\n     */\n    name?: string;\n    /**\n     * input value as a string\n     */\n    value_as_string?: string;\n}\n\nexport interface DeploymentInstanceInput extends _DeploymentInstanceInput {\n    _builtin_original?: _DeploymentInstanceInput;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DeploymentInstanceInputImpl  implements _DeploymentInstanceInput {\n    _builtin_original?: _DeploymentInstanceInput = undefined;\n    public name: string  | undefined ;\n    public value_as_string: string  | undefined ;\n    constructor(base: _DeploymentInstanceInput) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'value_as_string') >= 0) {\n            this.value_as_string = base.value_as_string;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDeploymentInstanceInputImpl(base: _DeploymentInstanceInput): DeploymentInstanceInputImpl {\n    return new DeploymentInstanceInputImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _DeploymentInstanceResource { \n    /**\n     * the guid that represents this resource\n     */\n    id?: string;\n    /**\n     * the type of resource\n     */\n    type?: string;\n    /**\n     * a name for this resource\n     */\n    name?: string;\n    /**\n     * the name of the template associated with this resource\n     */\n    template_name?: string;\n    /**\n     * The resource is shared among other templates. On destruction  of the template, the resource will not be destroyed \n     */\n    shared?: boolean;\n}\n\nexport interface DeploymentInstanceResource extends _DeploymentInstanceResource {\n    _builtin_original?: _DeploymentInstanceResource;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DeploymentInstanceResourceImpl  implements _DeploymentInstanceResource {\n    _builtin_original?: _DeploymentInstanceResource = undefined;\n    public id: string  | undefined ;\n    public type: string  | undefined ;\n    public name: string  | undefined ;\n    public template_name: string  | undefined ;\n    public shared: boolean  | undefined ;\n    constructor(base: _DeploymentInstanceResource) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'type') >= 0) {\n            this.type = base.type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'template_name') >= 0) {\n            this.template_name = base.template_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'shared') >= 0) {\n            this.shared = base.shared;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDeploymentInstanceResourceImpl(base: _DeploymentInstanceResource): DeploymentInstanceResourceImpl {\n    return new DeploymentInstanceResourceImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _DeploymentInstanceInput, DeploymentInstanceInput, DeploymentInstanceInputImpl, newDeploymentInstanceInputImpl } from './deploymentInstanceInput';\n\n\n/**\n * Deployment Instance specification \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DeploymentInstanceSpec { \n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n    /**\n     * Unique identifier\n     */\n    deployment_id: string;\n    /**\n     * A name used to unqiuely identify this deployment instance. \n     */\n    name: string;\n    /**\n     * A description for this deployment instance \n     */\n    description?: string;\n    inputs?: Array<DeploymentInstanceInput>;\n}\n\nexport interface DeploymentInstanceSpec extends _DeploymentInstanceSpec {\n    _builtin_original?: _DeploymentInstanceSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DeploymentInstanceSpecImpl  implements _DeploymentInstanceSpec {\n    _builtin_original?: _DeploymentInstanceSpec = undefined;\n    public org_id: string  | undefined ;\n    public deployment_id: string ;\n    public name: string ;\n    public description: string  | undefined ;\n    public inputs: Array<DeploymentInstanceInput>  | undefined ;\n    constructor(base: _DeploymentInstanceSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'deployment_id') >= 0) {\n            this.deployment_id = base.deployment_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'inputs') >= 0) {\n            if (base.inputs) {\n                this.inputs = base.inputs.map((original) => newDeploymentInstanceInputImpl(original));\n            } else {\n                this.inputs = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.inputs !== undefined) {\n            for (const item of this.inputs) {\n                if (item !== undefined && (item as DeploymentInstanceInputImpl)._remove_builtin_extensions !== undefined) {\n                    (item as DeploymentInstanceInputImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newDeploymentInstanceSpecImpl(base: _DeploymentInstanceSpec): DeploymentInstanceSpecImpl {\n    return new DeploymentInstanceSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _DeploymentResolvedSchema { \n    /**\n     * the name of the schema template model that was resolved\n     */\n    name?: string;\n    schema?: object;\n}\n\nexport interface DeploymentResolvedSchema extends _DeploymentResolvedSchema {\n    _builtin_original?: _DeploymentResolvedSchema;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DeploymentResolvedSchemaImpl  implements _DeploymentResolvedSchema {\n    _builtin_original?: _DeploymentResolvedSchema = undefined;\n    public name: string  | undefined ;\n    public schema: object  | undefined ;\n    constructor(base: _DeploymentResolvedSchema) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'schema') >= 0) {\n            this.schema = base.schema;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDeploymentResolvedSchemaImpl(base: _DeploymentResolvedSchema): DeploymentResolvedSchemaImpl {\n    return new DeploymentResolvedSchemaImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Deployment outputs\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DeploymentOutput { \n    /**\n     * The name of the output\n     */\n    name?: string;\n    /**\n     * The value type\n     */\n    type?: string;\n    /**\n     * A reference to the specific type (ie. the unique name of the type)\n     */\n    type_reference?: string;\n    /**\n     * output description\n     */\n    description?: string;\n    /**\n     * If this output is mandatory (ie. user is required to perform some action)\n     */\n    mandatory?: boolean;\n    /**\n     * a routing hint where the user is required to perform an action (eg. angular route)\n     */\n    route_hint?: Array<string>;\n}\n\nexport interface DeploymentOutput extends _DeploymentOutput {\n    _builtin_original?: _DeploymentOutput;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DeploymentOutputImpl  implements _DeploymentOutput {\n    _builtin_original?: _DeploymentOutput = undefined;\n    public name: string  | undefined ;\n    public type: string  | undefined ;\n    public type_reference: string  | undefined ;\n    public description: string  | undefined ;\n    public mandatory: boolean  | undefined ;\n    public route_hint: Array<string>  | undefined ;\n    constructor(base: _DeploymentOutput) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'type') >= 0) {\n            this.type = base.type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'type_reference') >= 0) {\n            this.type_reference = base.type_reference;\n        }\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mandatory') >= 0) {\n            this.mandatory = base.mandatory;\n        }\n        if (Object.keys(base).findIndex(key => key === 'route_hint') >= 0) {\n            this.route_hint = base.route_hint;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDeploymentOutputImpl(base: _DeploymentOutput): DeploymentOutputImpl {\n    return new DeploymentOutputImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _DeploymentParameter { \n    /**\n     * The name of the parameter\n     */\n    name?: string;\n    /**\n     * The value type\n     */\n    type?: any | null;\n    /**\n     * parameter description\n     */\n    description?: any | null;\n    /**\n     * The parameter default\n     */\n    _default?: any | null;\n}\n\nexport interface DeploymentParameter extends _DeploymentParameter {\n    _builtin_original?: _DeploymentParameter;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DeploymentParameterImpl  implements _DeploymentParameter {\n    _builtin_original?: _DeploymentParameter = undefined;\n    public name: string  | undefined ;\n    public type: any | null  | undefined ;\n    public description: any | null  | undefined ;\n    public _default: any | null  | undefined ;\n    constructor(base: _DeploymentParameter) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'type') >= 0) {\n            this.type = base.type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n        if (Object.keys(base).findIndex(key => key === '_default') >= 0) {\n            this._default = base._default;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDeploymentParameterImpl(base: _DeploymentParameter): DeploymentParameterImpl {\n    return new DeploymentParameterImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _DeploymentResolvedSchema, DeploymentResolvedSchema, DeploymentResolvedSchemaImpl, newDeploymentResolvedSchemaImpl } from './deploymentResolvedSchema';\nimport { _Deployment, Deployment, DeploymentImpl, newDeploymentImpl } from './deployment';\nimport { _DeploymentOutput, DeploymentOutput, DeploymentOutputImpl, newDeploymentOutputImpl } from './deploymentOutput';\nimport { _DeploymentParameter, DeploymentParameter, DeploymentParameterImpl, newDeploymentParameterImpl } from './deploymentParameter';\nimport { _DeploymentInstanceResource, DeploymentInstanceResource, DeploymentInstanceResourceImpl, newDeploymentInstanceResourceImpl } from './deploymentInstanceResource';\n\n\n/**\n * Deployment instance status \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DeploymentInstanceStatus { \n    /**\n     * The current status of the deployment instance.\n     */\n    status?: DeploymentInstanceStatus.StatusEnum;\n    /**\n     * the last failed message\n     */\n    last_failed_message?: string;\n    /**\n     * A list of all resources associated with this deployment instance. \n     */\n    resources?: Array<DeploymentInstanceResource>;\n    deployment?: Deployment;\n    /**\n     * A list of resolved schema templates \n     */\n    resolved_schema?: Array<DeploymentResolvedSchema>;\n    /**\n     * A list of missing parameters that caused the instance to fail and are required\n     */\n    missing_parameters?: Array<DeploymentParameter>;\n    /**\n     * A list of outputs for this deployment\n     */\n    outputs?: Array<DeploymentOutput>;\n}\n\nexport interface DeploymentInstanceStatus extends _DeploymentInstanceStatus {\n    _builtin_original?: _DeploymentInstanceStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DeploymentInstanceStatusImpl  implements _DeploymentInstanceStatus {\n    _builtin_original?: _DeploymentInstanceStatus = undefined;\n    public status: DeploymentInstanceStatus.StatusEnum  | undefined ;\n    public last_failed_message: string  | undefined ;\n    public resources: Array<DeploymentInstanceResource>  | undefined ;\n    public deployment: Deployment  | undefined ;\n    public resolved_schema: Array<DeploymentResolvedSchema>  | undefined ;\n    public missing_parameters: Array<DeploymentParameter>  | undefined ;\n    public outputs: Array<DeploymentOutput>  | undefined ;\n    constructor(base: _DeploymentInstanceStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_failed_message') >= 0) {\n            this.last_failed_message = base.last_failed_message;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resources') >= 0) {\n            if (base.resources) {\n                this.resources = base.resources.map((original) => newDeploymentInstanceResourceImpl(original));\n            } else {\n                this.resources = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'deployment') >= 0) {\n            this.deployment = base.deployment;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resolved_schema') >= 0) {\n            if (base.resolved_schema) {\n                this.resolved_schema = base.resolved_schema.map((original) => newDeploymentResolvedSchemaImpl(original));\n            } else {\n                this.resolved_schema = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'missing_parameters') >= 0) {\n            if (base.missing_parameters) {\n                this.missing_parameters = base.missing_parameters.map((original) => newDeploymentParameterImpl(original));\n            } else {\n                this.missing_parameters = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'outputs') >= 0) {\n            if (base.outputs) {\n                this.outputs = base.outputs.map((original) => newDeploymentOutputImpl(original));\n            } else {\n                this.outputs = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.resources !== undefined) {\n            for (const item of this.resources) {\n                if (item !== undefined && (item as DeploymentInstanceResourceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as DeploymentInstanceResourceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.resolved_schema !== undefined) {\n            for (const item of this.resolved_schema) {\n                if (item !== undefined && (item as DeploymentResolvedSchemaImpl)._remove_builtin_extensions !== undefined) {\n                    (item as DeploymentResolvedSchemaImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.missing_parameters !== undefined) {\n            for (const item of this.missing_parameters) {\n                if (item !== undefined && (item as DeploymentParameterImpl)._remove_builtin_extensions !== undefined) {\n                    (item as DeploymentParameterImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.outputs !== undefined) {\n            for (const item of this.outputs) {\n                if (item !== undefined && (item as DeploymentOutputImpl)._remove_builtin_extensions !== undefined) {\n                    (item as DeploymentOutputImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace DeploymentInstanceStatus {\n    export type StatusEnum = 'create_in_progress' | 'up' | 'failed' | 'deleted' | 'delete_in_progress';\n    export const StatusEnum = {\n        create_in_progress: 'create_in_progress' as StatusEnum,\n        up: 'up' as StatusEnum,\n        failed: 'failed' as StatusEnum,\n        deleted: 'deleted' as StatusEnum,\n        delete_in_progress: 'delete_in_progress' as StatusEnum\n    };\n}\n\n\nexport function newDeploymentInstanceStatusImpl(base: _DeploymentInstanceStatus): DeploymentInstanceStatusImpl {\n    return new DeploymentInstanceStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Deployment specification \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DeploymentSpec { \n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * A name used to unqiuely identify this deployment. \n     */\n    name: string;\n    /**\n     * A description for this deployment \n     */\n    description?: string;\n    schema?: object;\n    /**\n     * Lookup a schema by name (in the deployment schemas collection). schema and schema_name can be used together, as schema_name will update the schema with the appropriate includes primitive. \n     */\n    schema_name?: string;\n}\n\nexport interface DeploymentSpec extends _DeploymentSpec {\n    _builtin_original?: _DeploymentSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DeploymentSpecImpl  implements _DeploymentSpec {\n    _builtin_original?: _DeploymentSpec = undefined;\n    public org_id: string ;\n    public name: string ;\n    public description: string  | undefined ;\n    public schema: object  | undefined ;\n    public schema_name: string  | undefined ;\n    constructor(base: _DeploymentSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'schema') >= 0) {\n            this.schema = base.schema;\n        }\n        if (Object.keys(base).findIndex(key => key === 'schema_name') >= 0) {\n            this.schema_name = base.schema_name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDeploymentSpecImpl(base: _DeploymentSpec): DeploymentSpecImpl {\n    return new DeploymentSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _DeploymentParameter, DeploymentParameter, DeploymentParameterImpl, newDeploymentParameterImpl } from './deploymentParameter';\n\n\n/**\n * Deployment status \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DeploymentStatus { \n    schema_errors?: Array<string>;\n    /**\n     * A list of all parameters required for this deployment\n     */\n    parameters?: Array<DeploymentParameter>;\n}\n\nexport interface DeploymentStatus extends _DeploymentStatus {\n    _builtin_original?: _DeploymentStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DeploymentStatusImpl  implements _DeploymentStatus {\n    _builtin_original?: _DeploymentStatus = undefined;\n    public schema_errors: Array<string>  | undefined ;\n    public parameters: Array<DeploymentParameter>  | undefined ;\n    constructor(base: _DeploymentStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'schema_errors') >= 0) {\n            this.schema_errors = base.schema_errors;\n        }\n        if (Object.keys(base).findIndex(key => key === 'parameters') >= 0) {\n            if (base.parameters) {\n                this.parameters = base.parameters.map((original) => newDeploymentParameterImpl(original));\n            } else {\n                this.parameters = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.parameters !== undefined) {\n            for (const item of this.parameters) {\n                if (item !== undefined && (item as DeploymentParameterImpl)._remove_builtin_extensions !== undefined) {\n                    (item as DeploymentParameterImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newDeploymentStatusImpl(base: _DeploymentStatus): DeploymentStatusImpl {\n    return new DeploymentStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _DeploymentTemplateSpec, DeploymentTemplateSpec, DeploymentTemplateSpecImpl, newDeploymentTemplateSpecImpl } from './deploymentTemplateSpec';\n\n\n/**\n * A deployment template \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DeploymentTemplate { \n    metadata?: MetadataWithId;\n    spec: DeploymentTemplateSpec;\n}\n\nexport interface DeploymentTemplate extends _DeploymentTemplate {\n    _builtin_original?: _DeploymentTemplate;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DeploymentTemplateImpl  implements _DeploymentTemplate {\n    _builtin_original?: _DeploymentTemplate = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: DeploymentTemplateSpec ;\n    constructor(base: _DeploymentTemplate) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDeploymentTemplateImpl(base: _DeploymentTemplate): DeploymentTemplateImpl {\n    return new DeploymentTemplateImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Deployment Template specification \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DeploymentTemplateSpec { \n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * A name used to unqiuely identify this template. This is used as the \\'kind\\' property when creating a schema and inheriting this template with the \\'kind\\' property keyword. \n     */\n    name: string;\n    /**\n     * A description for this deployment template \n     */\n    description?: string;\n    /**\n     * Deployment Template object \n     */\n    template: object;\n    /**\n     * The type of template. Template types supported are: - model: the most primitive template type that is based on Agilicus OpenAPI objects          and their creation - schema: utilizes models to build up a set of objects, with composability \n     */\n    template_type: DeploymentTemplateSpec.TemplateTypeEnum;\n}\n\nexport interface DeploymentTemplateSpec extends _DeploymentTemplateSpec {\n    _builtin_original?: _DeploymentTemplateSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DeploymentTemplateSpecImpl  implements _DeploymentTemplateSpec {\n    _builtin_original?: _DeploymentTemplateSpec = undefined;\n    public org_id: string ;\n    public name: string ;\n    public description: string  | undefined ;\n    public template: object ;\n    public template_type: DeploymentTemplateSpec.TemplateTypeEnum ;\n    constructor(base: _DeploymentTemplateSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'template') >= 0) {\n            this.template = base.template;\n        }\n        if (Object.keys(base).findIndex(key => key === 'template_type') >= 0) {\n            this.template_type = base.template_type;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace DeploymentTemplateSpec {\n    export type TemplateTypeEnum = 'model' | 'schema';\n    export const TemplateTypeEnum = {\n        model: 'model' as TemplateTypeEnum,\n        schema: 'schema' as TemplateTypeEnum\n    };\n}\n\n\nexport function newDeploymentTemplateSpecImpl(base: _DeploymentTemplateSpec): DeploymentTemplateSpecImpl {\n    return new DeploymentTemplateSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _DereferencedStandaloneRuleTreeNode, DereferencedStandaloneRuleTreeNode, DereferencedStandaloneRuleTreeNodeImpl, newDereferencedStandaloneRuleTreeNodeImpl } from './dereferencedStandaloneRuleTreeNode';\n\n\n/**\n * Defines a child tree of a DereferenedStandaloneRuleTreeNode. The priority, unique amongst siblings, defines the order in which the siblings are evaluated (highest to lowest). The node is the child tree. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DereferencedStandaloneRuleTreeNodeChild { \n    /**\n     * The priority of a rule. Lower numbers are lower priority. The engine evaluates rules in order of highest priority to lowest. \n     */\n    priority: number;\n    node: DereferencedStandaloneRuleTreeNode;\n}\n\nexport interface DereferencedStandaloneRuleTreeNodeChild extends _DereferencedStandaloneRuleTreeNodeChild {\n    _builtin_original?: _DereferencedStandaloneRuleTreeNodeChild;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DereferencedStandaloneRuleTreeNodeChildImpl  implements _DereferencedStandaloneRuleTreeNodeChild {\n    _builtin_original?: _DereferencedStandaloneRuleTreeNodeChild = undefined;\n    public priority: number ;\n    public node: DereferencedStandaloneRuleTreeNode ;\n    constructor(base: _DereferencedStandaloneRuleTreeNodeChild) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'priority') >= 0) {\n            this.priority = base.priority;\n        }\n        if (Object.keys(base).findIndex(key => key === 'node') >= 0) {\n            this.node = base.node;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDereferencedStandaloneRuleTreeNodeChildImpl(base: _DereferencedStandaloneRuleTreeNodeChild): DereferencedStandaloneRuleTreeNodeChildImpl {\n    return new DereferencedStandaloneRuleTreeNodeChildImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneRuleSpec, StandaloneRuleSpec, StandaloneRuleSpecImpl, newStandaloneRuleSpecImpl } from './standaloneRuleSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\n\n\n/**\n * A rule which is not directly linked to a component in the system. Instead, it stands alone, being linked in a reusable fashion to components by using StandaloneRulesets and labels. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRule { \n    metadata?: MetadataWithId;\n    spec: StandaloneRuleSpec;\n}\n\nexport interface StandaloneRule extends _StandaloneRule {\n    _builtin_original?: _StandaloneRule;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRuleImpl  implements _StandaloneRule {\n    _builtin_original?: _StandaloneRule = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: StandaloneRuleSpec ;\n    constructor(base: _StandaloneRule) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneRuleImpl(base: _StandaloneRule): StandaloneRuleImpl {\n    return new StandaloneRuleImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneObjectConditions, StandaloneObjectConditions, StandaloneObjectConditionsImpl, newStandaloneObjectConditionsImpl } from './standaloneObjectConditions';\nimport { _DereferencedStandaloneRuleTreeNodeChild, DereferencedStandaloneRuleTreeNodeChild, DereferencedStandaloneRuleTreeNodeChildImpl, newDereferencedStandaloneRuleTreeNodeChildImpl } from './dereferencedStandaloneRuleTreeNodeChild';\nimport { _StandaloneRule, StandaloneRule, StandaloneRuleImpl, newStandaloneRuleImpl } from './standaloneRule';\n\n\n/**\n * A node in a DereferenedStandaloneRuleTree. Evaluation of a StandaloneRuleTree starts from its `tree` node. A given node first evaluates all of its `rules`. If they all evaluated to true, or the list is empty, then the `children` nodes are evaluated in priority order. Evaluation halts if one of the `rules` is false, or the `children` are empty. Actions are evaluated in the top-down order. I.e. actions defined by a parent are evaluated before actions defined by a child. Priority must be unique with the list of children. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DereferencedStandaloneRuleTreeNode { \n    /**\n     * The children of this node. They are evaluated in the order specified by their priority. Each child is itself a tree, evaluated recursively. \n     */\n    children: Array<DereferencedStandaloneRuleTreeNodeChild>;\n    /**\n     * The rules for this node. If each rule in this list evaluates to true, then the children of this node are evaluated. \n     */\n    rules: Array<StandaloneRule>;\n    object_conditions?: StandaloneObjectConditions;\n}\n\nexport interface DereferencedStandaloneRuleTreeNode extends _DereferencedStandaloneRuleTreeNode {\n    _builtin_original?: _DereferencedStandaloneRuleTreeNode;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DereferencedStandaloneRuleTreeNodeImpl  implements _DereferencedStandaloneRuleTreeNode {\n    _builtin_original?: _DereferencedStandaloneRuleTreeNode = undefined;\n    public children: Array<DereferencedStandaloneRuleTreeNodeChild> ;\n    public rules: Array<StandaloneRule> ;\n    public object_conditions: StandaloneObjectConditions  | undefined ;\n    constructor(base: _DereferencedStandaloneRuleTreeNode) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'children') >= 0) {\n            if (base.children) {\n                this.children = base.children.map((original) => newDereferencedStandaloneRuleTreeNodeChildImpl(original));\n            } else {\n                this.children = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'rules') >= 0) {\n            if (base.rules) {\n                this.rules = base.rules.map((original) => newStandaloneRuleImpl(original));\n            } else {\n                this.rules = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'object_conditions') >= 0) {\n            this.object_conditions = base.object_conditions;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.children !== undefined) {\n            for (const item of this.children) {\n                if (item !== undefined && (item as DereferencedStandaloneRuleTreeNodeChildImpl)._remove_builtin_extensions !== undefined) {\n                    (item as DereferencedStandaloneRuleTreeNodeChildImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.rules !== undefined) {\n            for (const item of this.rules) {\n                if (item !== undefined && (item as StandaloneRuleImpl)._remove_builtin_extensions !== undefined) {\n                    (item as StandaloneRuleImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newDereferencedStandaloneRuleTreeNodeImpl(base: _DereferencedStandaloneRuleTreeNode): DereferencedStandaloneRuleTreeNodeImpl {\n    return new DereferencedStandaloneRuleTreeNodeImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _DesktopClientGeneratedConfiguration, DesktopClientGeneratedConfiguration, DesktopClientGeneratedConfigurationImpl, newDesktopClientGeneratedConfigurationImpl } from './desktopClientGeneratedConfiguration';\nimport { _CustomDesktopClientConfig, CustomDesktopClientConfig, CustomDesktopClientConfigImpl, newCustomDesktopClientConfigImpl } from './customDesktopClientConfig';\n\n\n/**\n * Contains the information used to generate a configuration file for a client wishing to access a DesktopResource, as well that configuration file itself. The system generates the configuration file when the DesktopClientConfiguration is created. Set the `user_id` to provide credentials for the user in the generated configuration. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DesktopClientConfiguration { \n    /**\n     * The ID of the user wishing to access this DesktopResource. If this field is not set, no credentials will be provided in the DesktopClientGeneratedConfiguration. \n     */\n    user_id?: string | null;\n    /**\n     * The ID of the organisation which owns this DesktopClient. \n     */\n    org_id: string;\n    /**\n     * A list of configuration overrides. The items are applied in order, meaning that if two entries map to the same config item, the later one will override the earlier one. This allows for an inheritence mechanism whereby customer configs are placed into the list in ascending order of precision \n     */\n    custom_config?: Array<CustomDesktopClientConfig>;\n    generated_config?: DesktopClientGeneratedConfiguration;\n}\n\nexport interface DesktopClientConfiguration extends _DesktopClientConfiguration {\n    _builtin_original?: _DesktopClientConfiguration;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DesktopClientConfigurationImpl  implements _DesktopClientConfiguration {\n    _builtin_original?: _DesktopClientConfiguration = undefined;\n    public user_id: string | null  | undefined ;\n    public org_id: string ;\n    public custom_config: Array<CustomDesktopClientConfig>  | undefined ;\n    public generated_config: DesktopClientGeneratedConfiguration  | undefined ;\n    constructor(base: _DesktopClientConfiguration) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'custom_config') >= 0) {\n            if (base.custom_config) {\n                this.custom_config = base.custom_config.map((original) => newCustomDesktopClientConfigImpl(original));\n            } else {\n                this.custom_config = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'generated_config') >= 0) {\n            this.generated_config = base.generated_config;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.custom_config !== undefined) {\n            for (const item of this.custom_config) {\n                if (item !== undefined && (item as CustomDesktopClientConfigImpl)._remove_builtin_extensions !== undefined) {\n                    (item as CustomDesktopClientConfigImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newDesktopClientConfigurationImpl(base: _DesktopClientConfiguration): DesktopClientConfigurationImpl {\n    return new DesktopClientConfigurationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Contains the information generated by the system for a DesktopClientConfiguration. The `configuration_file` holds the contents of the file to use for configuration. Its type is described by `configuration_file_media_type`. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DesktopClientGeneratedConfiguration { \n    /**\n     * The id of the desktop resource associated with this configuration.\n     */\n    desktop_resource_id: string;\n    /**\n     * The base64-encoded contents of the configuration file. The type of the file may change depending on the protocol used to communicate with the DesktopResource, or based on the desired client. \n     */\n    configuration_file: string;\n    /**\n     * How to interpreted the decoded contents of `configuration_file`.\n     */\n    configuration_file_media_type: string;\n    /**\n     * When the config expires. An expired config may not work. Users should request a new one before it expires\n     */\n    expiry?: Date;\n}\n\nexport interface DesktopClientGeneratedConfiguration extends _DesktopClientGeneratedConfiguration {\n    _builtin_original?: _DesktopClientGeneratedConfiguration;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DesktopClientGeneratedConfigurationImpl  implements _DesktopClientGeneratedConfiguration {\n    _builtin_original?: _DesktopClientGeneratedConfiguration = undefined;\n    public desktop_resource_id: string ;\n    public configuration_file: string ;\n    public configuration_file_media_type: string ;\n    public expiry: Date  | undefined ;\n    constructor(base: _DesktopClientGeneratedConfiguration) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'desktop_resource_id') >= 0) {\n            this.desktop_resource_id = base.desktop_resource_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'configuration_file') >= 0) {\n            this.configuration_file = base.configuration_file;\n        }\n        if (Object.keys(base).findIndex(key => key === 'configuration_file_media_type') >= 0) {\n            this.configuration_file_media_type = base.configuration_file_media_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'expiry') >= 0) {\n            this.expiry = base.expiry;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDesktopClientGeneratedConfigurationImpl(base: _DesktopClientGeneratedConfiguration): DesktopClientGeneratedConfigurationImpl {\n    return new DesktopClientGeneratedConfigurationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _VNCConnectionInfo, VNCConnectionInfo, VNCConnectionInfoImpl, newVNCConnectionInfoImpl } from './vNCConnectionInfo';\n\n\n/**\n * A container type which has information on how to connect to an upstream desktop\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DesktopConnectionInfo { \n    vnc_connection_info?: VNCConnectionInfo;\n}\n\nexport interface DesktopConnectionInfo extends _DesktopConnectionInfo {\n    _builtin_original?: _DesktopConnectionInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DesktopConnectionInfoImpl  implements _DesktopConnectionInfo {\n    _builtin_original?: _DesktopConnectionInfo = undefined;\n    public vnc_connection_info: VNCConnectionInfo  | undefined ;\n    constructor(base: _DesktopConnectionInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'vnc_connection_info') >= 0) {\n            this.vnc_connection_info = base.vnc_connection_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDesktopConnectionInfoImpl(base: _DesktopConnectionInfo): DesktopConnectionInfoImpl {\n    return new DesktopConnectionInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Provisions a RemoteApp. Users connecting using this DesktopResource will launch the given application upon connection using the appropriate protocol for launching applications associated with the desktop_type. Note that not all fields will be used, depending on the desktop_type.  If the desktop_type does not support a remote_app protocol, then this field must be left undefined.  If this field is set to None on an existing DesktopResource, the RemoteApp will be removed; the Desktop will revert back to full Desktop access. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DesktopRemoteApp { \n    /**\n     * The full path and name to the remote application\\'s executable on the machine \n     */\n    command_path: string;\n    /**\n     * The arguments to the command.\n     */\n    command_arguments?: string;\n    /**\n     * The directory to start the application in.\n     */\n    working_directory?: string;\n    /**\n     * Whether to expand environment variables in the command arguments using local values. If false, uses the remote system\\'s environment variables. \n     */\n    expand_command_line_with_local?: boolean;\n    /**\n     * Whether to expand environment variables in the working directory using local values. If false, uses the remote system\\'s environment variables. \n     */\n    expand_working_directory_with_local?: boolean;\n    /**\n     * The file, if any, to be opened on the remote desktop by the remote app. \n     */\n    file_to_open?: string;\n}\n\nexport interface DesktopRemoteApp extends _DesktopRemoteApp {\n    _builtin_original?: _DesktopRemoteApp;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DesktopRemoteAppImpl  implements _DesktopRemoteApp {\n    _builtin_original?: _DesktopRemoteApp = undefined;\n    public command_path: string ;\n    public command_arguments: string  | undefined ;\n    public working_directory: string  | undefined ;\n    public expand_command_line_with_local: boolean  | undefined ;\n    public expand_working_directory_with_local: boolean  | undefined ;\n    public file_to_open: string  | undefined ;\n    constructor(base: _DesktopRemoteApp) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'command_path') >= 0) {\n            this.command_path = base.command_path;\n        }\n        if (Object.keys(base).findIndex(key => key === 'command_arguments') >= 0) {\n            this.command_arguments = base.command_arguments;\n        }\n        if (Object.keys(base).findIndex(key => key === 'working_directory') >= 0) {\n            this.working_directory = base.working_directory;\n        }\n        if (Object.keys(base).findIndex(key => key === 'expand_command_line_with_local') >= 0) {\n            this.expand_command_line_with_local = base.expand_command_line_with_local;\n        }\n        if (Object.keys(base).findIndex(key => key === 'expand_working_directory_with_local') >= 0) {\n            this.expand_working_directory_with_local = base.expand_working_directory_with_local;\n        }\n        if (Object.keys(base).findIndex(key => key === 'file_to_open') >= 0) {\n            this.file_to_open = base.file_to_open;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDesktopRemoteAppImpl(base: _DesktopRemoteApp): DesktopRemoteAppImpl {\n    return new DesktopRemoteAppImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _DesktopConnectionInfo, DesktopConnectionInfo, DesktopConnectionInfoImpl, newDesktopConnectionInfoImpl } from './desktopConnectionInfo';\nimport { _NetworkServiceConfig, NetworkServiceConfig, NetworkServiceConfigImpl, newNetworkServiceConfigImpl } from './networkServiceConfig';\nimport { _DesktopRemoteApp, DesktopRemoteApp, DesktopRemoteAppImpl, newDesktopRemoteAppImpl } from './desktopRemoteApp';\nimport { _ResourceConfig, ResourceConfig, ResourceConfigImpl, newResourceConfigImpl } from './resourceConfig';\n\n\n/**\n * The configurable properties of a DesktopResource. A DesktopResource is also a NetworkResource, so it must have a unique name across all NetworkResources. Note that if the DesktopResource must be associated with a Connector (via `connector_id`) in order for users to access it. If `connector_id` is empty, then the DesktopResource cannot be accessed. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DesktopResourceSpec { \n    /**\n     * The name of the DesktopResource. This uniquely identifies the DesktopResource within the organisation. \n     */\n    name: string;\n    /**\n     * The hostname or IP of the DesktopResource. A Desktop Gateway will proxy requests from the client through to this address via the Connector associated with this gateway using `connector_id`. \n     */\n    address: string;\n    config?: NetworkServiceConfig;\n    /**\n     * The type of desktop represented by this DesktopResource. The type identifies which protocol will be used to communicate with it. The possible types are:   - `rdp`: Remote Desktop Protocol (RDP). This allows clients which support RDP to connect to a desktop     running an RDP server.   - \\'vnc\\': Virtual Network Computing protocol (VNC). This allows the clients that support VNC to connect to a     desktop running a VNC server \n     */\n    desktop_type: DesktopResourceSpec.DesktopTypeEnum;\n    /**\n     * The internal session type. In Microsoft Remote Desktop, `admin` means console.   - `admin`: Connect to the console (session id = 0)   - `user`: Create a new user session, which might sign out the console depending on setup. \n     */\n    session_type?: DesktopResourceSpec.SessionTypeEnum;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * Unique identifier\n     */\n    connector_id?: string;\n    /**\n     * A human readable slug to identify a resource and that is rfc1035 label compliant. The length has been restricted to 20 characters such that this name can be concatenated with other names or slugs. A slug is readOnly as it is generated by the backend resource. \n     */\n    name_slug?: string;\n    connection_info?: DesktopConnectionInfo;\n    remote_app?: DesktopRemoteApp;\n    /**\n     * Extra configuration for desktops. For RDP desktops use https://learn.microsoft.com/en-us/azure/virtual-desktop/rdp-properties These fields will be added to the end of the generated RDP configuration files. These configurations will override other configurations. \n     */\n    extra_configs?: Array<string>;\n    resource_config?: ResourceConfig;\n    /**\n     * Whether to allow non-domian-joined users. If true, append relavant properties for user\\'s RDP session \n     */\n    allow_non_domain_joined_users?: boolean;\n}\n\nexport interface DesktopResourceSpec extends _DesktopResourceSpec {\n    _builtin_original?: _DesktopResourceSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DesktopResourceSpecImpl  implements _DesktopResourceSpec {\n    _builtin_original?: _DesktopResourceSpec = undefined;\n    public name: string ;\n    public address: string ;\n    public config: NetworkServiceConfig  | undefined ;\n    public desktop_type: DesktopResourceSpec.DesktopTypeEnum ;\n    public session_type: DesktopResourceSpec.SessionTypeEnum  | undefined ;\n    public org_id: string ;\n    public connector_id: string  | undefined ;\n    public name_slug: string  | undefined ;\n    public connection_info: DesktopConnectionInfo  | undefined ;\n    public remote_app: DesktopRemoteApp  | undefined ;\n    public extra_configs: Array<string>  | undefined ;\n    public resource_config: ResourceConfig  | undefined ;\n    public allow_non_domain_joined_users: boolean  | undefined ;\n    constructor(base: _DesktopResourceSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'address') >= 0) {\n            this.address = base.address;\n        }\n        if (Object.keys(base).findIndex(key => key === 'config') >= 0) {\n            this.config = base.config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'desktop_type') >= 0) {\n            this.desktop_type = base.desktop_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session_type') >= 0) {\n            this.session_type = base.session_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_id') >= 0) {\n            this.connector_id = base.connector_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name_slug') >= 0) {\n            this.name_slug = base.name_slug;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connection_info') >= 0) {\n            this.connection_info = base.connection_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'remote_app') >= 0) {\n            this.remote_app = base.remote_app;\n        }\n        if (Object.keys(base).findIndex(key => key === 'extra_configs') >= 0) {\n            this.extra_configs = base.extra_configs;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_config') >= 0) {\n            this.resource_config = base.resource_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'allow_non_domain_joined_users') >= 0) {\n            this.allow_non_domain_joined_users = base.allow_non_domain_joined_users;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace DesktopResourceSpec {\n    export type DesktopTypeEnum = 'rdp' | 'vnc';\n    export const DesktopTypeEnum = {\n        rdp: 'rdp' as DesktopTypeEnum,\n        vnc: 'vnc' as DesktopTypeEnum\n    };\n    export type SessionTypeEnum = 'user' | 'admin';\n    export const SessionTypeEnum = {\n        user: 'user' as SessionTypeEnum,\n        admin: 'admin' as SessionTypeEnum\n    };\n}\n\n\nexport function newDesktopResourceSpecImpl(base: _DesktopResourceSpec): DesktopResourceSpecImpl {\n    return new DesktopResourceSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourceStatsMetadata, ResourceStatsMetadata, ResourceStatsMetadataImpl, newResourceStatsMetadataImpl } from './resourceStatsMetadata';\nimport { _ResourceSessionStats, ResourceSessionStats, ResourceSessionStatsImpl, newResourceSessionStatsImpl } from './resourceSessionStats';\nimport { _ResourceStats, ResourceStats, ResourceStatsImpl, newResourceStatsImpl } from './resourceStats';\n\n\n/**\n * Stats for a DesktopResource, including basic resource stats. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DesktopResourceStats { \n    /**\n     * The unique ID of the resource. The id is provided here so that a list of resource stats can be POSTed in a single request. \n     */\n    resource_id?: string;\n    metadata?: ResourceStatsMetadata;\n    /**\n     * The summary status of the Resource. - A `good` status means that no action is neccessary on this Resource - A `warn` status means that there is an issue that should be dealt with   Examples include a forwarder resource that cannot bind to the provisioned port (eg. permission   issue binding to port 80) - A `down` status indicates that there is a service accessibility problem   that should be dealt with as soon as possible. This could mean that there is a   problem with the Resource\\'s configuration, or the platform. - A `stale` status indicates that although there may not be anything wrong,   we haven\\'t been able to update the status recently. This may indicate   a communications issue between Agilicus and the Connector containing the resource. \n     */\n    overall_status?: string;\n    /**\n     * A message pertaining to the last warning associated with the resource. This message is persistent in that it will remain when the status goes to `good`. \n     */\n    last_warning_message?: string;\n    session_stats?: ResourceSessionStats;\n}\n\nexport interface DesktopResourceStats extends _DesktopResourceStats {\n    _builtin_original?: _DesktopResourceStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DesktopResourceStatsImpl  implements _DesktopResourceStats {\n    _builtin_original?: _DesktopResourceStats = undefined;\n    public resource_id: string  | undefined ;\n    public metadata: ResourceStatsMetadata  | undefined ;\n    public overall_status: string  | undefined ;\n    public last_warning_message: string  | undefined ;\n    public session_stats: ResourceSessionStats  | undefined ;\n    constructor(base: _DesktopResourceStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'resource_id') >= 0) {\n            this.resource_id = base.resource_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'overall_status') >= 0) {\n            this.overall_status = base.overall_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_warning_message') >= 0) {\n            this.last_warning_message = base.last_warning_message;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session_stats') >= 0) {\n            this.session_stats = base.session_stats;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDesktopResourceStatsImpl(base: _DesktopResourceStats): DesktopResourceStatsImpl {\n    return new DesktopResourceStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _DesktopResourceStats, DesktopResourceStats, DesktopResourceStatsImpl, newDesktopResourceStatsImpl } from './desktopResourceStats';\n\n\n/**\n * Derived, read-only properties of a DesktopResource. Use these to determine how to interact with a DesktopResource, or to see its current state. If you have not assigned the DesktopResource to a Connector, then some of its status will not be availble. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DesktopResourceStatus { \n    /**\n     * The uri at which to access the Desktop Gateway for this DesktopResource. \n     */\n    gateway_uri: string;\n    stats?: DesktopResourceStats;\n}\n\nexport interface DesktopResourceStatus extends _DesktopResourceStatus {\n    _builtin_original?: _DesktopResourceStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DesktopResourceStatusImpl  implements _DesktopResourceStatus {\n    _builtin_original?: _DesktopResourceStatus = undefined;\n    public gateway_uri: string ;\n    public stats: DesktopResourceStats  | undefined ;\n    constructor(base: _DesktopResourceStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'gateway_uri') >= 0) {\n            this.gateway_uri = base.gateway_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'stats') >= 0) {\n            this.stats = base.stats;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDesktopResourceStatusImpl(base: _DesktopResourceStatus): DesktopResourceStatusImpl {\n    return new DesktopResourceStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _DesktopServerGeneratedConfiguration, DesktopServerGeneratedConfiguration, DesktopServerGeneratedConfigurationImpl, newDesktopServerGeneratedConfigurationImpl } from './desktopServerGeneratedConfiguration';\n\n\n/**\n * Contains the information used to generate a configuration file for a server exposing a desktop. For example, this can be used to generate registry entries for configuring RemoteApp desktops. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DesktopServerConfiguration { \n    /**\n     * The ID of the organisation which owns this DesktopResource. \n     */\n    org_id: string;\n    generated_config?: DesktopServerGeneratedConfiguration;\n    /**\n     * The format of the configuration file. Different servers and resources may require different configuration formats. This allows the user to request the approriate type. Note that not all formats are supported for each resource. The API will return a 400 indicating that the format is unsupported in that case when requesting a configuration of that type.  Types:   - win-reg: A windows registry file. \n     */\n    configuration_file_format: string;\n}\n\nexport interface DesktopServerConfiguration extends _DesktopServerConfiguration {\n    _builtin_original?: _DesktopServerConfiguration;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DesktopServerConfigurationImpl  implements _DesktopServerConfiguration {\n    _builtin_original?: _DesktopServerConfiguration = undefined;\n    public org_id: string ;\n    public generated_config: DesktopServerGeneratedConfiguration  | undefined ;\n    public configuration_file_format: string ;\n    constructor(base: _DesktopServerConfiguration) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'generated_config') >= 0) {\n            this.generated_config = base.generated_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'configuration_file_format') >= 0) {\n            this.configuration_file_format = base.configuration_file_format;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDesktopServerConfigurationImpl(base: _DesktopServerConfiguration): DesktopServerConfigurationImpl {\n    return new DesktopServerConfigurationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Contains the information generated by the system for a DesktopServerConfiguration. The `configuration_file` holds the contents of the file to use for configuration. Its type is described by `configuration_file_media_type`. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DesktopServerGeneratedConfiguration { \n    /**\n     * The id of the desktop resource associated with this configuration.\n     */\n    desktop_resource_id: string;\n    /**\n     * The base64-encoded contents of the configuration file. The type of the file may change depending on the protocol used to communicate with the DesktopResource, or based on the desired server. \n     */\n    configuration_file: string;\n    /**\n     * How to interpreted the decoded contents of `configuration_file`.\n     */\n    configuration_file_media_type: string;\n    /**\n     * The format of the configuration file. Different servers and resources may require different configuration formats. This allows the user to request the approriate type. Note that not all formats are supported for each resource. The API will return a 400 indicating that the format is unsupported in that case when requesting a configuration of that type.  Types:   - win-reg: A windows registry file. \n     */\n    configuration_file_format: string;\n}\n\nexport interface DesktopServerGeneratedConfiguration extends _DesktopServerGeneratedConfiguration {\n    _builtin_original?: _DesktopServerGeneratedConfiguration;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DesktopServerGeneratedConfigurationImpl  implements _DesktopServerGeneratedConfiguration {\n    _builtin_original?: _DesktopServerGeneratedConfiguration = undefined;\n    public desktop_resource_id: string ;\n    public configuration_file: string ;\n    public configuration_file_media_type: string ;\n    public configuration_file_format: string ;\n    constructor(base: _DesktopServerGeneratedConfiguration) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'desktop_resource_id') >= 0) {\n            this.desktop_resource_id = base.desktop_resource_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'configuration_file') >= 0) {\n            this.configuration_file = base.configuration_file;\n        }\n        if (Object.keys(base).findIndex(key => key === 'configuration_file_media_type') >= 0) {\n            this.configuration_file_media_type = base.configuration_file_media_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'configuration_file_format') >= 0) {\n            this.configuration_file_format = base.configuration_file_format;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newDesktopServerGeneratedConfigurationImpl(base: _DesktopServerGeneratedConfiguration): DesktopServerGeneratedConfigurationImpl {\n    return new DesktopServerGeneratedConfigurationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _IconDimensions, IconDimensions, IconDimensionsImpl, newIconDimensionsImpl } from './iconDimensions';\n\n\n/**\n * Describes an icon which can be used by software to represent something. Icons are accessible via a URI (e.g. https:// or file://). Various attributes describe the properties\\' of the icon which can help to decide whether or not is appropriate for a given client. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Icon { \n    /**\n     * The URI at which to access this resource.\n     */\n    uri: string;\n    /**\n     * A list of reasons to use this icon. This could be a list of clients which use it, for example. \n     */\n    purposes: Array<string>;\n    dimensions?: IconDimensions;\n}\n\nexport interface Icon extends _Icon {\n    _builtin_original?: _Icon;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class IconImpl  implements _Icon {\n    _builtin_original?: _Icon = undefined;\n    public uri: string ;\n    public purposes: Array<string> ;\n    public dimensions: IconDimensions  | undefined ;\n    constructor(base: _Icon) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'uri') >= 0) {\n            this.uri = base.uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'purposes') >= 0) {\n            this.purposes = base.purposes;\n        }\n        if (Object.keys(base).findIndex(key => key === 'dimensions') >= 0) {\n            this.dimensions = base.dimensions;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newIconImpl(base: _Icon): IconImpl {\n    return new IconImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Icon, Icon, IconImpl, newIconImpl } from './icon';\n\n\n/**\n * Provides customisation for how a resource is displayed to the user. For example, use this to control the icons which represent a resource in different contexts. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _DisplayInfo { \n    /**\n     * The list of icons for this resource. Each icon is associated with a purpose describing how it should be used. Typically client software will select the icon described by the purpose. The order of the icons is stable. Typically software can choose to use the first icon that exists and matches its selection criteria. \n     */\n    icons: Array<Icon>;\n    /**\n     * Whether or not this Resource is visible in profile/desktop. - \\'no\\' or \\'\\' or not exists, resource is not hidden - \\'all\\' resource is hidden in both profile and desktop - \\'profile\\' profile resources are hidden, visible in desktop - \\'desktop\\' desktop resources are hidden, visible in profile \n     */\n    hide?: DisplayInfo.HideEnum;\n}\n\nexport interface DisplayInfo extends _DisplayInfo {\n    _builtin_original?: _DisplayInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class DisplayInfoImpl  implements _DisplayInfo {\n    _builtin_original?: _DisplayInfo = undefined;\n    public icons: Array<Icon> ;\n    public hide: DisplayInfo.HideEnum  | undefined ;\n    constructor(base: _DisplayInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'icons') >= 0) {\n            if (base.icons) {\n                this.icons = base.icons.map((original) => newIconImpl(original));\n            } else {\n                this.icons = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'hide') >= 0) {\n            this.hide = base.hide;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.icons !== undefined) {\n            for (const item of this.icons) {\n                if (item !== undefined && (item as IconImpl)._remove_builtin_extensions !== undefined) {\n                    (item as IconImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace DisplayInfo {\n    export type HideEnum = 'no' | 'all' | 'profile' | 'desktop';\n    export const HideEnum = {\n        no: 'no' as HideEnum,\n        all: 'all' as HideEnum,\n        profile: 'profile' as HideEnum,\n        desktop: 'desktop' as HideEnum\n    };\n}\n\n\nexport function newDisplayInfoImpl(base: _DisplayInfo): DisplayInfoImpl {\n    return new DisplayInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorLocalBind, AgentConnectorLocalBind, AgentConnectorLocalBindImpl, newAgentConnectorLocalBindImpl } from './agentConnectorLocalBind';\n\n\n/**\n * The Egress Gateway configures a connector to act as a gateway to the Internet, typically for other connectors. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _EgressGateway { \n    /**\n     * A list describing the local proxy binds for egress gateway requests. \n     */\n    local_binds: Array<AgentConnectorLocalBind>;\n}\n\nexport interface EgressGateway extends _EgressGateway {\n    _builtin_original?: _EgressGateway;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class EgressGatewayImpl  implements _EgressGateway {\n    _builtin_original?: _EgressGateway = undefined;\n    public local_binds: Array<AgentConnectorLocalBind> ;\n    constructor(base: _EgressGateway) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'local_binds') >= 0) {\n            if (base.local_binds) {\n                this.local_binds = base.local_binds.map((original) => newAgentConnectorLocalBindImpl(original));\n            } else {\n                this.local_binds = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.local_binds !== undefined) {\n            for (const item of this.local_binds) {\n                if (item !== undefined && (item as AgentConnectorLocalBindImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AgentConnectorLocalBindImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newEgressGatewayImpl(base: _EgressGateway): EgressGatewayImpl {\n    return new EgressGatewayImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Encrypted Data for a ConnectorSecureTransfer \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _EncryptedData { \n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n    /**\n     * Encrypted data to be transferred. \n     */\n    encrypted_data: string | null;\n}\n\nexport interface EncryptedData extends _EncryptedData {\n    _builtin_original?: _EncryptedData;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class EncryptedDataImpl  implements _EncryptedData {\n    _builtin_original?: _EncryptedData = undefined;\n    public org_id: string  | undefined ;\n    public encrypted_data: string | null ;\n    constructor(base: _EncryptedData) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'encrypted_data') >= 0) {\n            this.encrypted_data = base.encrypted_data;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newEncryptedDataImpl(base: _EncryptedData): EncryptedDataImpl {\n    return new EncryptedDataImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A unique name that refers to a specific env_config.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _EnvironmentConfigVar { \n    /**\n     * The name of an environment variable. It must be a C_IDENTIFIER. An Identifier can only have alphanumeric characters(a-z , A-Z , 0-9) and underscore( _ ). It is also case-sensitive. \n     */\n    name: string;\n    /**\n     * The value of the environment variable to be passed to the running application\\'s environment. \n     */\n    value?: string | null;\n}\n\nexport interface EnvironmentConfigVar extends _EnvironmentConfigVar {\n    _builtin_original?: _EnvironmentConfigVar;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class EnvironmentConfigVarImpl  implements _EnvironmentConfigVar {\n    _builtin_original?: _EnvironmentConfigVar = undefined;\n    public name: string ;\n    public value: string | null  | undefined ;\n    constructor(base: _EnvironmentConfigVar) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'value') >= 0) {\n            this.value = base.value;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newEnvironmentConfigVarImpl(base: _EnvironmentConfigVar): EnvironmentConfigVarImpl {\n    return new EnvironmentConfigVarImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _EnvironmentConfigVar, EnvironmentConfigVar, EnvironmentConfigVarImpl, newEnvironmentConfigVarImpl } from './environmentConfigVar';\n\n\n/**\n * Environment config\\'s properties\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _EnvironmentConfig { \n    /**\n     * Unique identifier\n     */\n    readonly id?: string;\n    /**\n     * Unique identifier\n     */\n    readonly app_id?: string;\n    /**\n     * Unique identifier\n     */\n    readonly environment_name?: string;\n    /**\n     * The Organisation which is responsibile for maintaining this Environment. \n     */\n    maintenance_org_id: string;\n    /**\n     * configuration type\n     */\n    config_type: EnvironmentConfig.ConfigTypeEnum;\n    /**\n     * mount user domain\n     */\n    mount_domain?: string;\n    /**\n     * mount username\n     */\n    mount_username?: string;\n    /**\n     * mount password\n     */\n    mount_password?: string;\n    /**\n     * mount hostname\n     */\n    mount_hostname?: string;\n    /**\n     * mount share\n     */\n    mount_share?: string;\n    /**\n     * source mount path\n     */\n    mount_src_path?: string;\n    /**\n     * destination mount path\n     */\n    mount_path?: string;\n    /**\n     * files API URI where configuration is located\n     */\n    file_store_uri?: string;\n    /**\n     * It stores an array of env_config_var objects(key & value pairs) in API. It provides environment variables to build configmaps and secrets directly. \n     */\n    env_config_vars?: Array<EnvironmentConfigVar>;\n}\n\nexport interface EnvironmentConfig extends _EnvironmentConfig {\n    _builtin_original?: _EnvironmentConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class EnvironmentConfigImpl  implements _EnvironmentConfig {\n    _builtin_original?: _EnvironmentConfig = undefined;\n    public readonly id: string  | undefined ;\n    public readonly app_id: string  | undefined ;\n    public readonly environment_name: string  | undefined ;\n    public maintenance_org_id: string ;\n    public config_type: EnvironmentConfig.ConfigTypeEnum ;\n    public mount_domain: string  | undefined ;\n    public mount_username: string  | undefined ;\n    public mount_password: string  | undefined ;\n    public mount_hostname: string  | undefined ;\n    public mount_share: string  | undefined ;\n    public mount_src_path: string  | undefined ;\n    public mount_path: string  | undefined ;\n    public file_store_uri: string  | undefined ;\n    public env_config_vars: Array<EnvironmentConfigVar>  | undefined ;\n    constructor(base: _EnvironmentConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'app_id') >= 0) {\n            this.app_id = base.app_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'environment_name') >= 0) {\n            this.environment_name = base.environment_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'maintenance_org_id') >= 0) {\n            this.maintenance_org_id = base.maintenance_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'config_type') >= 0) {\n            this.config_type = base.config_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mount_domain') >= 0) {\n            this.mount_domain = base.mount_domain;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mount_username') >= 0) {\n            this.mount_username = base.mount_username;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mount_password') >= 0) {\n            this.mount_password = base.mount_password;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mount_hostname') >= 0) {\n            this.mount_hostname = base.mount_hostname;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mount_share') >= 0) {\n            this.mount_share = base.mount_share;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mount_src_path') >= 0) {\n            this.mount_src_path = base.mount_src_path;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mount_path') >= 0) {\n            this.mount_path = base.mount_path;\n        }\n        if (Object.keys(base).findIndex(key => key === 'file_store_uri') >= 0) {\n            this.file_store_uri = base.file_store_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'env_config_vars') >= 0) {\n            if (base.env_config_vars) {\n                this.env_config_vars = base.env_config_vars.map((original) => newEnvironmentConfigVarImpl(original));\n            } else {\n                this.env_config_vars = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.env_config_vars !== undefined) {\n            for (const item of this.env_config_vars) {\n                if (item !== undefined && (item as EnvironmentConfigVarImpl)._remove_builtin_extensions !== undefined) {\n                    (item as EnvironmentConfigVarImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace EnvironmentConfig {\n    export type ConfigTypeEnum = 'configmap_mount' | 'configmap_env' | 'secret_mount' | 'secret_env' | 'file_mount' | 'mount_smb' | 'mount_gcs' | 'mount_tmpdir';\n    export const ConfigTypeEnum = {\n        configmap_mount: 'configmap_mount' as ConfigTypeEnum,\n        configmap_env: 'configmap_env' as ConfigTypeEnum,\n        secret_mount: 'secret_mount' as ConfigTypeEnum,\n        secret_env: 'secret_env' as ConfigTypeEnum,\n        file_mount: 'file_mount' as ConfigTypeEnum,\n        mount_smb: 'mount_smb' as ConfigTypeEnum,\n        mount_gcs: 'mount_gcs' as ConfigTypeEnum,\n        mount_tmpdir: 'mount_tmpdir' as ConfigTypeEnum\n    };\n}\n\n\nexport function newEnvironmentConfigImpl(base: _EnvironmentConfig): EnvironmentConfigImpl {\n    return new EnvironmentConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RuntimeStatus, RuntimeStatus, RuntimeStatusImpl, newRuntimeStatusImpl } from './runtimeStatus';\n\n\n/**\n * The status of an appliction environment. This can be used to determine how an application instance is running, if it needs any maintenence, or if an upgrade is in progress \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _EnvironmentStatus { \n    runtime_status?: RuntimeStatus;\n}\n\nexport interface EnvironmentStatus extends _EnvironmentStatus {\n    _builtin_original?: _EnvironmentStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class EnvironmentStatusImpl  implements _EnvironmentStatus {\n    _builtin_original?: _EnvironmentStatus = undefined;\n    public runtime_status: RuntimeStatus  | undefined ;\n    constructor(base: _EnvironmentStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'runtime_status') >= 0) {\n            this.runtime_status = base.runtime_status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newEnvironmentStatusImpl(base: _EnvironmentStatus): EnvironmentStatusImpl {\n    return new EnvironmentStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Object describing error codes for the agilicus APIs\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ErrorMessage { \n    /**\n     * A shortform error code for identifying the error. See error_message for details\n     */\n    error_code?: string;\n    /**\n     * A longform description detailing how the user can resolve the error\n     */\n    error_message?: string;\n}\n\nexport interface ErrorMessage extends _ErrorMessage {\n    _builtin_original?: _ErrorMessage;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ErrorMessageImpl  implements _ErrorMessage {\n    _builtin_original?: _ErrorMessage = undefined;\n    public error_code: string  | undefined ;\n    public error_message: string  | undefined ;\n    constructor(base: _ErrorMessage) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'error_code') >= 0) {\n            this.error_code = base.error_code;\n        }\n        if (Object.keys(base).findIndex(key => key === 'error_message') >= 0) {\n            this.error_message = base.error_message;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newErrorMessageImpl(base: _ErrorMessage): ErrorMessageImpl {\n    return new ErrorMessageImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A specification for an extra process to track outside of the main processes\\' life cycle \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ExtraProcess { \n    /**\n     * Full path to the process to run or attach to\n     */\n    program_name: string;\n    /**\n     * If set use program name as a regex for finding the process to attach to by name or executable path can\\'t be set if start_if_not_running is set. \n     */\n    name_regex_flag?: boolean;\n    /**\n     * If there isn\\'t a process running this service when running the launcher start it \n     */\n    start_if_not_running?: boolean;\n    /**\n     * If the process should be terminated when the launcher exits \n     */\n    exit_when_ending?: boolean;\n    /**\n     * If the process is already running when the launcher starts, attach to it an intercept its traffic \n     */\n    attach_if_already_running?: boolean;\n    /**\n     * Some programs require specific startup initialization procedures that cause the initial interceptor spawn + resume startup procedure to not function correctly. The typical behavior for this type of program is exhibited as the program terminates prematurely. This setting, when true, does a normal fork and will attach to the pid after the process has initially started.\n     */\n    fork_then_attach?: boolean;\n    /**\n     * The arguments necessary for the command to run.\n     */\n    command_arguments?: string;\n    /**\n     * The directory this extra process will start in\n     */\n    start_in?: string;\n    /**\n     * When attaching to a running process, match on both the process and the arguments\n     */\n    match_arguments?: boolean;\n    /**\n     * When running the interceptor, wait on this proccess as well as the main process. You can use this with the process name to intercept processes that call some kind of launcher which runs another process. \n     */\n    wait_for_exit?: boolean;\n}\n\nexport interface ExtraProcess extends _ExtraProcess {\n    _builtin_original?: _ExtraProcess;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ExtraProcessImpl  implements _ExtraProcess {\n    _builtin_original?: _ExtraProcess = undefined;\n    public program_name: string ;\n    public name_regex_flag: boolean  | undefined ;\n    public start_if_not_running: boolean  | undefined ;\n    public exit_when_ending: boolean  | undefined ;\n    public attach_if_already_running: boolean  | undefined ;\n    public fork_then_attach: boolean  | undefined ;\n    public command_arguments: string  | undefined ;\n    public start_in: string  | undefined ;\n    public match_arguments: boolean  | undefined ;\n    public wait_for_exit: boolean  | undefined ;\n    constructor(base: _ExtraProcess) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'program_name') >= 0) {\n            this.program_name = base.program_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name_regex_flag') >= 0) {\n            this.name_regex_flag = base.name_regex_flag;\n        }\n        if (Object.keys(base).findIndex(key => key === 'start_if_not_running') >= 0) {\n            this.start_if_not_running = base.start_if_not_running;\n        }\n        if (Object.keys(base).findIndex(key => key === 'exit_when_ending') >= 0) {\n            this.exit_when_ending = base.exit_when_ending;\n        }\n        if (Object.keys(base).findIndex(key => key === 'attach_if_already_running') >= 0) {\n            this.attach_if_already_running = base.attach_if_already_running;\n        }\n        if (Object.keys(base).findIndex(key => key === 'fork_then_attach') >= 0) {\n            this.fork_then_attach = base.fork_then_attach;\n        }\n        if (Object.keys(base).findIndex(key => key === 'command_arguments') >= 0) {\n            this.command_arguments = base.command_arguments;\n        }\n        if (Object.keys(base).findIndex(key => key === 'start_in') >= 0) {\n            this.start_in = base.start_in;\n        }\n        if (Object.keys(base).findIndex(key => key === 'match_arguments') >= 0) {\n            this.match_arguments = base.match_arguments;\n        }\n        if (Object.keys(base).findIndex(key => key === 'wait_for_exit') >= 0) {\n            this.wait_for_exit = base.wait_for_exit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newExtraProcessImpl(base: _ExtraProcess): ExtraProcessImpl {\n    return new ExtraProcessImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _FeatureValue, FeatureValue, FeatureValueImpl, newFeatureValueImpl } from './featureValue';\n\n\n/**\n * The specification for a product feature\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FeatureSpec { \n    /**\n     * The features name\n     */\n    name: string;\n    /**\n     * The description for this feature.\n     */\n    description?: string;\n    /**\n     * The priority of this feature relative to other features with the same key name. Features with identical key names are evaluated in order of higher priority number to lower priority number. \n     */\n    priority?: number;\n    /**\n     * A feature key\n     */\n    key: string;\n    value?: FeatureValue;\n}\n\nexport interface FeatureSpec extends _FeatureSpec {\n    _builtin_original?: _FeatureSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FeatureSpecImpl  implements _FeatureSpec {\n    _builtin_original?: _FeatureSpec = undefined;\n    public name: string ;\n    public description: string  | undefined ;\n    public priority: number  | undefined ;\n    public key: string ;\n    public value: FeatureValue  | undefined ;\n    constructor(base: _FeatureSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'priority') >= 0) {\n            this.priority = base.priority;\n        }\n        if (Object.keys(base).findIndex(key => key === 'key') >= 0) {\n            this.key = base.key;\n        }\n        if (Object.keys(base).findIndex(key => key === 'value') >= 0) {\n            this.value = base.value;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFeatureSpecImpl(base: _FeatureSpec): FeatureSpecImpl {\n    return new FeatureSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _ProductStatus, ProductStatus, ProductStatusImpl, newProductStatusImpl } from './productStatus';\nimport { _ProductSpec, ProductSpec, ProductSpecImpl, newProductSpecImpl } from './productSpec';\n\n\n/**\n * A high level product that contains one or more BillingProductPrices\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Product { \n    metadata?: MetadataWithId;\n    spec: ProductSpec;\n    status?: ProductStatus;\n}\n\nexport interface Product extends _Product {\n    _builtin_original?: _Product;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ProductImpl  implements _Product {\n    _builtin_original?: _Product = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: ProductSpec ;\n    public status: ProductStatus  | undefined ;\n    constructor(base: _Product) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newProductImpl(base: _Product): ProductImpl {\n    return new ProductImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Product, Product, ProductImpl, newProductImpl } from './product';\n\n\n/**\n * The status for a product feature\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FeatureStatus { \n    /**\n     * the products associated with this feature\n     */\n    products?: Array<Product>;\n}\n\nexport interface FeatureStatus extends _FeatureStatus {\n    _builtin_original?: _FeatureStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FeatureStatusImpl  implements _FeatureStatus {\n    _builtin_original?: _FeatureStatus = undefined;\n    public products: Array<Product>  | undefined ;\n    constructor(base: _FeatureStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'products') >= 0) {\n            if (base.products) {\n                this.products = base.products.map((original) => newProductImpl(original));\n            } else {\n                this.products = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.products !== undefined) {\n            for (const item of this.products) {\n                if (item !== undefined && (item as ProductImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ProductImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newFeatureStatusImpl(base: _FeatureStatus): FeatureStatusImpl {\n    return new FeatureStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _FeatureTagSpec, FeatureTagSpec, FeatureTagSpecImpl, newFeatureTagSpecImpl } from './featureTagSpec';\nimport { _CommonMetadata, CommonMetadata, CommonMetadataImpl, newCommonMetadataImpl } from './commonMetadata';\n\n\n/**\n * A FeatureTag is a simple attribute of the system which can be used to determine whether it is appropriate for a given usecase. For example, typically a user would filter or restrict regions based on a list of tags.  Each tag represents an orthogonal piece of information whose meaning if obvious from its value. When configuring the system, a customer may choose to provide a policy that controls into which regions they may deploy their assets. Such a policy may list say something like:    - Germany or France    - not high-cost In plain terms, that would say: \\\"We can deploy assets in non-high-cost regions located either in germany or france\\\".  The most basic use for a FeatureTag is a list of intedependent features that describe what an Organistion is allowed to do:   e.g. \\\"Can use shares\\\", or \\\"Can deploy in North American clusters\\\"  Features are referred to by name. The name is immutable. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FeatureTag { \n    metadata?: CommonMetadata;\n    spec: FeatureTagSpec;\n}\n\nexport interface FeatureTag extends _FeatureTag {\n    _builtin_original?: _FeatureTag;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FeatureTagImpl  implements _FeatureTag {\n    _builtin_original?: _FeatureTag = undefined;\n    public metadata: CommonMetadata  | undefined ;\n    public spec: FeatureTagSpec ;\n    constructor(base: _FeatureTag) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFeatureTagImpl(base: _FeatureTag): FeatureTagImpl {\n    return new FeatureTagImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The specification of a feature tag. Note that the name is immutable. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FeatureTagSpec { \n    /**\n     * The name of a tag. Tag names are case sensitive.\n     */\n    name: string;\n}\n\nexport interface FeatureTagSpec extends _FeatureTagSpec {\n    _builtin_original?: _FeatureTagSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FeatureTagSpecImpl  implements _FeatureTagSpec {\n    _builtin_original?: _FeatureTagSpec = undefined;\n    public name: string ;\n    constructor(base: _FeatureTagSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFeatureTagSpecImpl(base: _FeatureTagSpec): FeatureTagSpecImpl {\n    return new FeatureTagSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The feature value\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FeatureValue { \n    /**\n     * feature is enabled (true) or disabled(false)\n     */\n    enabled?: boolean;\n    /**\n     * The feature minimum value\n     */\n    min?: number;\n    /**\n     * The feature maximum value\n     */\n    max?: number;\n}\n\nexport interface FeatureValue extends _FeatureValue {\n    _builtin_original?: _FeatureValue;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FeatureValueImpl  implements _FeatureValue {\n    _builtin_original?: _FeatureValue = undefined;\n    public enabled: boolean  | undefined ;\n    public min: number  | undefined ;\n    public max: number  | undefined ;\n    constructor(base: _FeatureValue) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'min') >= 0) {\n            this.min = base.min;\n        }\n        if (Object.keys(base).findIndex(key => key === 'max') >= 0) {\n            this.max = base.max;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFeatureValueImpl(base: _FeatureValue): FeatureValueImpl {\n    return new FeatureValueImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configuration specific to injected client javascript, when using fetch injection \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FetchInjection { \n    /**\n     * List of paths, that if match, will be injected to handle login authorization \n     */\n    paths?: Array<string>;\n}\n\nexport interface FetchInjection extends _FetchInjection {\n    _builtin_original?: _FetchInjection;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FetchInjectionImpl  implements _FetchInjection {\n    _builtin_original?: _FetchInjection = undefined;\n    public paths: Array<string>  | undefined ;\n    constructor(base: _FetchInjection) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'paths') >= 0) {\n            this.paths = base.paths;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFetchInjectionImpl(base: _FetchInjection): FetchInjectionImpl {\n    return new FetchInjectionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The details of a file association. Which object it is associated with, which org, etc. The file_id represents the file to be associated. The object_id represents the object to be associated. The org_id represents the organisation owning the object.  Only objects owned by an organisation with permission to modify the file may create an association. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FileAssociationSpec { \n    /**\n     * Unique identifier\n     */\n    file_id: string;\n    /**\n     * Unique identifier\n     */\n    object_id: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n}\n\nexport interface FileAssociationSpec extends _FileAssociationSpec {\n    _builtin_original?: _FileAssociationSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FileAssociationSpecImpl  implements _FileAssociationSpec {\n    _builtin_original?: _FileAssociationSpec = undefined;\n    public file_id: string ;\n    public object_id: string ;\n    public org_id: string ;\n    constructor(base: _FileAssociationSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'file_id') >= 0) {\n            this.file_id = base.file_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'object_id') >= 0) {\n            this.object_id = base.object_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFileAssociationSpecImpl(base: _FileAssociationSpec): FileAssociationSpecImpl {\n    return new FileAssociationSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ObjectOperStatus, ObjectOperStatus, ObjectOperStatusImpl, newObjectOperStatusImpl } from './objectOperStatus';\n\n\n/**\n * The status of the file association. Can inform the caller of whether the assocation points to a valid file, for example. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FileAssociationStatus { \n    file_status?: ObjectOperStatus;\n}\n\nexport interface FileAssociationStatus extends _FileAssociationStatus {\n    _builtin_original?: _FileAssociationStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FileAssociationStatusImpl  implements _FileAssociationStatus {\n    _builtin_original?: _FileAssociationStatus = undefined;\n    public file_status: ObjectOperStatus  | undefined ;\n    constructor(base: _FileAssociationStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'file_status') >= 0) {\n            this.file_status = base.file_status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFileAssociationStatusImpl(base: _FileAssociationStatus): FileAssociationStatusImpl {\n    return new FileAssociationStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _FileShareClientConfigMacConfig, FileShareClientConfigMacConfig, FileShareClientConfigMacConfigImpl, newFileShareClientConfigMacConfigImpl } from './fileShareClientConfigMacConfig';\nimport { _FileShareClientConfigWindowsConfig, FileShareClientConfigWindowsConfig, FileShareClientConfigWindowsConfigImpl, newFileShareClientConfigWindowsConfigImpl } from './fileShareClientConfigWindowsConfig';\nimport { _FileShareClientConfigLinuxConfig, FileShareClientConfigLinuxConfig, FileShareClientConfigLinuxConfigImpl, newFileShareClientConfigLinuxConfigImpl } from './fileShareClientConfigLinuxConfig';\n\n\n/**\n * Information required to configure automatic use of fileshares on client devices \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FileShareClientConfig { \n    windows_config?: FileShareClientConfigWindowsConfig;\n    linux_config?: FileShareClientConfigLinuxConfig;\n    mac_config?: FileShareClientConfigMacConfig;\n}\n\nexport interface FileShareClientConfig extends _FileShareClientConfig {\n    _builtin_original?: _FileShareClientConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FileShareClientConfigImpl  implements _FileShareClientConfig {\n    _builtin_original?: _FileShareClientConfig = undefined;\n    public windows_config: FileShareClientConfigWindowsConfig  | undefined ;\n    public linux_config: FileShareClientConfigLinuxConfig  | undefined ;\n    public mac_config: FileShareClientConfigMacConfig  | undefined ;\n    constructor(base: _FileShareClientConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'windows_config') >= 0) {\n            this.windows_config = base.windows_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'linux_config') >= 0) {\n            this.linux_config = base.linux_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mac_config') >= 0) {\n            this.mac_config = base.mac_config;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFileShareClientConfigImpl(base: _FileShareClientConfig): FileShareClientConfigImpl {\n    return new FileShareClientConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configuration for mounting a drive on linux\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FileShareClientConfigLinuxConfig { \n    /**\n     * what path should this drive be mounted to\n     */\n    path?: string;\n}\n\nexport interface FileShareClientConfigLinuxConfig extends _FileShareClientConfigLinuxConfig {\n    _builtin_original?: _FileShareClientConfigLinuxConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FileShareClientConfigLinuxConfigImpl  implements _FileShareClientConfigLinuxConfig {\n    _builtin_original?: _FileShareClientConfigLinuxConfig = undefined;\n    public path: string  | undefined ;\n    constructor(base: _FileShareClientConfigLinuxConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'path') >= 0) {\n            this.path = base.path;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFileShareClientConfigLinuxConfigImpl(base: _FileShareClientConfigLinuxConfig): FileShareClientConfigLinuxConfigImpl {\n    return new FileShareClientConfigLinuxConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configuration for mounting a drive on mac\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FileShareClientConfigMacConfig { \n    /**\n     * what path should this drive be mounted to\n     */\n    path?: string;\n}\n\nexport interface FileShareClientConfigMacConfig extends _FileShareClientConfigMacConfig {\n    _builtin_original?: _FileShareClientConfigMacConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FileShareClientConfigMacConfigImpl  implements _FileShareClientConfigMacConfig {\n    _builtin_original?: _FileShareClientConfigMacConfig = undefined;\n    public path: string  | undefined ;\n    constructor(base: _FileShareClientConfigMacConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'path') >= 0) {\n            this.path = base.path;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFileShareClientConfigMacConfigImpl(base: _FileShareClientConfigMacConfig): FileShareClientConfigMacConfigImpl {\n    return new FileShareClientConfigMacConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configuration for mounting a drive on windows\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FileShareClientConfigWindowsConfig { \n    /**\n     * What drive to attach this share to or what share name to use.\n     */\n    name?: string;\n    /**\n     * Should this share be mounted as a drive?\n     */\n    type?: FileShareClientConfigWindowsConfig.TypeEnum;\n}\n\nexport interface FileShareClientConfigWindowsConfig extends _FileShareClientConfigWindowsConfig {\n    _builtin_original?: _FileShareClientConfigWindowsConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FileShareClientConfigWindowsConfigImpl  implements _FileShareClientConfigWindowsConfig {\n    _builtin_original?: _FileShareClientConfigWindowsConfig = undefined;\n    public name: string  | undefined ;\n    public type: FileShareClientConfigWindowsConfig.TypeEnum  | undefined ;\n    constructor(base: _FileShareClientConfigWindowsConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'type') >= 0) {\n            this.type = base.type;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace FileShareClientConfigWindowsConfig {\n    export type TypeEnum = 'mapped_drive' | 'network_location';\n    export const TypeEnum = {\n        mapped_drive: 'mapped_drive' as TypeEnum,\n        network_location: 'network_location' as TypeEnum\n    };\n}\n\n\nexport function newFileShareClientConfigWindowsConfigImpl(base: _FileShareClientConfigWindowsConfig): FileShareClientConfigWindowsConfigImpl {\n    return new FileShareClientConfigWindowsConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _FileShareClientConfig, FileShareClientConfig, FileShareClientConfigImpl, newFileShareClientConfigImpl } from './fileShareClientConfig';\nimport { _ResourceRuleGroup, ResourceRuleGroup, ResourceRuleGroupImpl, newResourceRuleGroupImpl } from './resourceRuleGroup';\n\n\n/**\n * A NetworkMountRuleConfig configures how a set of clients mount a share. This enables configuration like \\'windows shop computers mount share x to the y: drive\\'. If there are no rules, then all users with access to this share will mount automatically. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _NetworkMountRuleConfig { \n    rules: ResourceRuleGroup;\n    mount: FileShareClientConfig;\n}\n\nexport interface NetworkMountRuleConfig extends _NetworkMountRuleConfig {\n    _builtin_original?: _NetworkMountRuleConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class NetworkMountRuleConfigImpl  implements _NetworkMountRuleConfig {\n    _builtin_original?: _NetworkMountRuleConfig = undefined;\n    public rules: ResourceRuleGroup ;\n    public mount: FileShareClientConfig ;\n    constructor(base: _NetworkMountRuleConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'rules') >= 0) {\n            this.rules = base.rules;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mount') >= 0) {\n            this.mount = base.mount;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newNetworkMountRuleConfigImpl(base: _NetworkMountRuleConfig): NetworkMountRuleConfigImpl {\n    return new NetworkMountRuleConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourceConfig, ResourceConfig, ResourceConfigImpl, newResourceConfigImpl } from './resourceConfig';\nimport { _NetworkMountRuleConfig, NetworkMountRuleConfig, NetworkMountRuleConfigImpl, newNetworkMountRuleConfigImpl } from './networkMountRuleConfig';\n\n\n/**\n * The configurable properties of a FileShareService. Since multiple file shares will be exposed using the same host, no two FileShareServices in the same organisation may have the same share_name. The connector_id controls which connector will be used to expose this file share. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FileShareServiceSpec { \n    /**\n     * The name of the service. This uniquely identifies the service within the organisation. \n     */\n    name: string;\n    /**\n     * A human readable slug to identify a resource and that is rfc1035 label compliant. The length has been restricted to 20 characters such that this name can be concatenated with other names or slugs. A slug is readOnly as it is generated by the backend resource. \n     */\n    name_slug?: string;\n    /**\n     * The name of the share as exposed to the Internet. This will be used to build the URI used to mount the share. The share_name is unique among the file shares of the organisation. \n     */\n    share_name: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * The path to the directory to share on the local file system. This should point to a directory, not a file. Use a slash (\\'/\\', U+002F) to separate directories within the path. \n     */\n    local_path: string;\n    /**\n     * Unique identifier\n     */\n    connector_id: string;\n    /**\n     * The index of the FileShareService. This is used to construct a unique URI at which to access this FileShareService. \n     */\n    share_index?: number;\n    /**\n     * Whether or not the FileShareService encrypts data using the same Transport Layer Security (TLS) session as seen by the client. Setting this to true will cause the FileShareService to provision a Certificate signed by a private key only known to it. All traffic to and from the FileShareService will be encrypted using a TLS session derived from that Certificate. Setting this to false will cause the FileShareService to use a TLS session derived from a Certificate provisioned by the Agilicus Cloud. \n     */\n    transport_end_to_end_tls?: boolean;\n    /**\n     * The base domain from which to access this share. The file share endpoint will be \\\"https://share-$(share_index).$(base_domain)\\\" \n     */\n    transport_base_domain?: string;\n    /**\n     * Enable file acl permissions on the agent\\'s host. This option enables fine grained control of individual files based on a user\\'s specific groups and access level \n     */\n    file_level_access_permissions?: boolean;\n    /**\n     * The configuration to determine where this share should be used automatically. Use this field to set up clients to mount a share automatically. \n     */\n    client_config?: Array<NetworkMountRuleConfig>;\n    resource_config?: ResourceConfig;\n    /**\n     * The subpath extending the local file system which is being shared, supporting vars expansion\n     */\n    sub_path?: string;\n}\n\nexport interface FileShareServiceSpec extends _FileShareServiceSpec {\n    _builtin_original?: _FileShareServiceSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FileShareServiceSpecImpl  implements _FileShareServiceSpec {\n    _builtin_original?: _FileShareServiceSpec = undefined;\n    public name: string ;\n    public name_slug: string  | undefined ;\n    public share_name: string ;\n    public org_id: string ;\n    public local_path: string ;\n    public connector_id: string ;\n    public share_index: number  | undefined ;\n    public transport_end_to_end_tls: boolean  | undefined ;\n    public transport_base_domain: string  | undefined ;\n    public file_level_access_permissions: boolean  | undefined ;\n    public client_config: Array<NetworkMountRuleConfig>  | undefined ;\n    public resource_config: ResourceConfig  | undefined ;\n    public sub_path: string  | undefined ;\n    constructor(base: _FileShareServiceSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name_slug') >= 0) {\n            this.name_slug = base.name_slug;\n        }\n        if (Object.keys(base).findIndex(key => key === 'share_name') >= 0) {\n            this.share_name = base.share_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'local_path') >= 0) {\n            this.local_path = base.local_path;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_id') >= 0) {\n            this.connector_id = base.connector_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'share_index') >= 0) {\n            this.share_index = base.share_index;\n        }\n        if (Object.keys(base).findIndex(key => key === 'transport_end_to_end_tls') >= 0) {\n            this.transport_end_to_end_tls = base.transport_end_to_end_tls;\n        }\n        if (Object.keys(base).findIndex(key => key === 'transport_base_domain') >= 0) {\n            this.transport_base_domain = base.transport_base_domain;\n        }\n        if (Object.keys(base).findIndex(key => key === 'file_level_access_permissions') >= 0) {\n            this.file_level_access_permissions = base.file_level_access_permissions;\n        }\n        if (Object.keys(base).findIndex(key => key === 'client_config') >= 0) {\n            if (base.client_config) {\n                this.client_config = base.client_config.map((original) => newNetworkMountRuleConfigImpl(original));\n            } else {\n                this.client_config = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_config') >= 0) {\n            this.resource_config = base.resource_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'sub_path') >= 0) {\n            this.sub_path = base.sub_path;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.client_config !== undefined) {\n            for (const item of this.client_config) {\n                if (item !== undefined && (item as NetworkMountRuleConfigImpl)._remove_builtin_extensions !== undefined) {\n                    (item as NetworkMountRuleConfigImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newFileShareServiceSpecImpl(base: _FileShareServiceSpec): FileShareServiceSpecImpl {\n    return new FileShareServiceSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _FileShareServiceStats, FileShareServiceStats, FileShareServiceStatsImpl, newFileShareServiceStatsImpl } from './fileShareServiceStats';\n\n\n/**\n * Derived, read-only properties of a FileShareService. Use these to determine how to interact with a file share service, or the current state of the file share service. Note that if service is not assigned to anything, it will have no host-related information. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FileShareServiceStatus { \n    /**\n     * The name of the application in the system providing the file share. This can be used to construct the default URI used to access the file share given the organisation\\'s subdomain. \n     */\n    share_base_app_name?: string;\n    /**\n     * The identifier of the instance running the file share. Useful for auditing/etc. \n     */\n    instance_id?: string;\n    /**\n     * The identifier of the organistion responsible for the instance running the file share. \n     */\n    instance_org_id?: string;\n    /**\n     * The uri at which to access this file share. If this value is empty, the file share can be accessed at https://shares.$(organisation.subdomain)/share_name. \n     */\n    share_uri?: string;\n    /**\n     * the uri hosting this share and only this share. use this uri in favour of share_uri, which maps multiple shares on to the same host, leading to problems with some drivers. \n     */\n    per_host_share_uri?: string;\n    /**\n     * The subdomain on which to access the share. This is prepended to the subdomain of the share\\'s organisation. \n     */\n    per_host_share_base_host?: string;\n    stats?: FileShareServiceStats;\n}\n\nexport interface FileShareServiceStatus extends _FileShareServiceStatus {\n    _builtin_original?: _FileShareServiceStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FileShareServiceStatusImpl  implements _FileShareServiceStatus {\n    _builtin_original?: _FileShareServiceStatus = undefined;\n    public share_base_app_name: string  | undefined ;\n    public instance_id: string  | undefined ;\n    public instance_org_id: string  | undefined ;\n    public share_uri: string  | undefined ;\n    public per_host_share_uri: string  | undefined ;\n    public per_host_share_base_host: string  | undefined ;\n    public stats: FileShareServiceStats  | undefined ;\n    constructor(base: _FileShareServiceStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'share_base_app_name') >= 0) {\n            this.share_base_app_name = base.share_base_app_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'instance_id') >= 0) {\n            this.instance_id = base.instance_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'instance_org_id') >= 0) {\n            this.instance_org_id = base.instance_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'share_uri') >= 0) {\n            this.share_uri = base.share_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'per_host_share_uri') >= 0) {\n            this.per_host_share_uri = base.per_host_share_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'per_host_share_base_host') >= 0) {\n            this.per_host_share_base_host = base.per_host_share_base_host;\n        }\n        if (Object.keys(base).findIndex(key => key === 'stats') >= 0) {\n            this.stats = base.stats;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFileShareServiceStatusImpl(base: _FileShareServiceStatus): FileShareServiceStatusImpl {\n    return new FileShareServiceStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _FileTemplateSpec, FileTemplateSpec, FileTemplateSpecImpl, newFileTemplateSpecImpl } from './fileTemplateSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\n\n\n/**\n * A FileTemplate defines a templated file which maps a single file stored in the API to a set of rendered files whose structure is defined by the stored file, and whose content is a result of filling in the template\\'s parameters with arguments provided in the request to render it. Templates are text files, with a special syntax describing how to fill in the parameters.   Archives:   The underyling File in the API may be an archive (such as a zip), in which case each file   will be rendered in turn, unless the template indicates that only a subset of files should be modified,   or the request itself asks for only a file within the archive.  Rendering:   The process of rendering a template involves collecting the template arguments from the   request and static context, merging them, then running the resulting set through a template   engine. The merge process is straightforward. Each argument has a name. The argument set   has exactly one value per name. If two arguments have the same name, the resulting argument   set uses the value with the highest priority. The request data has higher priority than the   static context. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FileTemplate { \n    metadata?: MetadataWithId;\n    spec: FileTemplateSpec;\n}\n\nexport interface FileTemplate extends _FileTemplate {\n    _builtin_original?: _FileTemplate;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FileTemplateImpl  implements _FileTemplate {\n    _builtin_original?: _FileTemplate = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: FileTemplateSpec ;\n    constructor(base: _FileTemplate) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFileTemplateImpl(base: _FileTemplate): FileTemplateImpl {\n    return new FileTemplateImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An argument to a FileTemplate \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FileTemplateArgument { \n    /**\n     * A name for a file template parameter. The system provides a few well-known values:  - \\\"user.id\\\"  - \\\"user.email\\\"  - \\\"user.first_name\\\"  - \\\"user.last_name\\\"  - \\\"user.full_name\\\" \n     */\n    name: string;\n    /**\n     * The value to use in place of parameter `name`. \n     */\n    value: any | null;\n}\n\nexport interface FileTemplateArgument extends _FileTemplateArgument {\n    _builtin_original?: _FileTemplateArgument;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FileTemplateArgumentImpl  implements _FileTemplateArgument {\n    _builtin_original?: _FileTemplateArgument = undefined;\n    public name: string ;\n    public value: any | null ;\n    constructor(base: _FileTemplateArgument) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'value') >= 0) {\n            this.value = base.value;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFileTemplateArgumentImpl(base: _FileTemplateArgument): FileTemplateArgumentImpl {\n    return new FileTemplateArgumentImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Captures an association between a file template and another resource in the system. This can be used to find whether a template is somehow relevant. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FileTemplateAssociation { \n    /**\n     * Unique identifier\n     */\n    object_id: string;\n    /**\n     * The type of an object\n     */\n    object_type: string;\n    /**\n     * Optionally used by a client to distinguish between per-object uses of the template.\n     */\n    descriptive_text?: string;\n}\n\nexport interface FileTemplateAssociation extends _FileTemplateAssociation {\n    _builtin_original?: _FileTemplateAssociation;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FileTemplateAssociationImpl  implements _FileTemplateAssociation {\n    _builtin_original?: _FileTemplateAssociation = undefined;\n    public object_id: string ;\n    public object_type: string ;\n    public descriptive_text: string  | undefined ;\n    constructor(base: _FileTemplateAssociation) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'object_id') >= 0) {\n            this.object_id = base.object_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'object_type') >= 0) {\n            this.object_type = base.object_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'descriptive_text') >= 0) {\n            this.descriptive_text = base.descriptive_text;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFileTemplateAssociationImpl(base: _FileTemplateAssociation): FileTemplateAssociationImpl {\n    return new FileTemplateAssociationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Defines a template parameters and the values it may take. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FileTemplateParameter { \n    /**\n     * A name for a file template parameter. The system provides a few well-known values:  - \\\"user.id\\\"  - \\\"user.email\\\"  - \\\"user.first_name\\\"  - \\\"user.last_name\\\"  - \\\"user.full_name\\\" \n     */\n    name: string;\n    /**\n     * A hint to the client for how to generate the input. This requires some coordination between the client and the template author. \n     */\n    input_hint?: string;\n}\n\nexport interface FileTemplateParameter extends _FileTemplateParameter {\n    _builtin_original?: _FileTemplateParameter;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FileTemplateParameterImpl  implements _FileTemplateParameter {\n    _builtin_original?: _FileTemplateParameter = undefined;\n    public name: string ;\n    public input_hint: string  | undefined ;\n    constructor(base: _FileTemplateParameter) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'input_hint') >= 0) {\n            this.input_hint = base.input_hint;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFileTemplateParameterImpl(base: _FileTemplateParameter): FileTemplateParameterImpl {\n    return new FileTemplateParameterImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _User, User, UserImpl, newUserImpl } from './user';\nimport { _FileTemplateResourceInfo, FileTemplateResourceInfo, FileTemplateResourceInfoImpl, newFileTemplateResourceInfoImpl } from './fileTemplateResourceInfo';\nimport { _FileTemplateArgument, FileTemplateArgument, FileTemplateArgumentImpl, newFileTemplateArgumentImpl } from './fileTemplateArgument';\n\n\n/**\n * A request to render a file template. The request contains the arguments to provide to the template. The result will contain the binary data. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FileTemplateRenderRequest { \n    /**\n     * A list of arguments to render the template. The renderer combines these with the template\\'s default arguments, with the template_arguments taking precedence. \n     */\n    template_arguments: Array<FileTemplateArgument>;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    resource_information?: FileTemplateResourceInfo;\n    user_information?: User;\n    /**\n     * Set this to true if the client is a browser and you want to trigger a download. \n     */\n    as_attachment?: boolean;\n}\n\nexport interface FileTemplateRenderRequest extends _FileTemplateRenderRequest {\n    _builtin_original?: _FileTemplateRenderRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FileTemplateRenderRequestImpl  implements _FileTemplateRenderRequest {\n    _builtin_original?: _FileTemplateRenderRequest = undefined;\n    public template_arguments: Array<FileTemplateArgument> ;\n    public org_id: string ;\n    public resource_information: FileTemplateResourceInfo  | undefined ;\n    public user_information: User  | undefined ;\n    public as_attachment: boolean  | undefined ;\n    constructor(base: _FileTemplateRenderRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'template_arguments') >= 0) {\n            if (base.template_arguments) {\n                this.template_arguments = base.template_arguments.map((original) => newFileTemplateArgumentImpl(original));\n            } else {\n                this.template_arguments = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_information') >= 0) {\n            this.resource_information = base.resource_information;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_information') >= 0) {\n            this.user_information = base.user_information;\n        }\n        if (Object.keys(base).findIndex(key => key === 'as_attachment') >= 0) {\n            this.as_attachment = base.as_attachment;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.template_arguments !== undefined) {\n            for (const item of this.template_arguments) {\n                if (item !== undefined && (item as FileTemplateArgumentImpl)._remove_builtin_extensions !== undefined) {\n                    (item as FileTemplateArgumentImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newFileTemplateRenderRequestImpl(base: _FileTemplateRenderRequest): FileTemplateRenderRequestImpl {\n    return new FileTemplateRenderRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserResourceAccessInfoStatus, UserResourceAccessInfoStatus, UserResourceAccessInfoStatusImpl, newUserResourceAccessInfoStatusImpl } from './userResourceAccessInfoStatus';\n\n\n/**\n * Context information about a resource for a template argument. Populating this provides access to:   - \\\"resource.id\\\"  - \\\"resource.name\\\"  - \\\"resource.org_id\\\"  - \\\"resource.uri.domain\\\"  - \\\"resource.uri.scheme\\\"  - \\\"resource.uri\\\"  - \\\"resource.type\\\"  - \\\"user_resource_info.X\\\" where X is an attribute of the UserResourceAccessInfoStatus \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FileTemplateResourceInfo { \n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n    /**\n     * Unique identifier\n     */\n    resource_id?: string;\n    name?: string;\n    /**\n     * The URI for the resource\n     */\n    uri?: string;\n    /**\n     * The type of the resource\n     */\n    resource_type?: string;\n    user_resource_info?: UserResourceAccessInfoStatus;\n}\n\nexport interface FileTemplateResourceInfo extends _FileTemplateResourceInfo {\n    _builtin_original?: _FileTemplateResourceInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FileTemplateResourceInfoImpl  implements _FileTemplateResourceInfo {\n    _builtin_original?: _FileTemplateResourceInfo = undefined;\n    public org_id: string  | undefined ;\n    public resource_id: string  | undefined ;\n    public name: string  | undefined ;\n    public uri: string  | undefined ;\n    public resource_type: string  | undefined ;\n    public user_resource_info: UserResourceAccessInfoStatus  | undefined ;\n    constructor(base: _FileTemplateResourceInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_id') >= 0) {\n            this.resource_id = base.resource_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'uri') >= 0) {\n            this.uri = base.uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_type') >= 0) {\n            this.resource_type = base.resource_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_resource_info') >= 0) {\n            this.user_resource_info = base.user_resource_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFileTemplateResourceInfoImpl(base: _FileTemplateResourceInfo): FileTemplateResourceInfoImpl {\n    return new FileTemplateResourceInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _FileTemplateParameter, FileTemplateParameter, FileTemplateParameterImpl, newFileTemplateParameterImpl } from './fileTemplateParameter';\nimport { _FileTemplateAssociation, FileTemplateAssociation, FileTemplateAssociationImpl, newFileTemplateAssociationImpl } from './fileTemplateAssociation';\nimport { _FileTemplateArgument, FileTemplateArgument, FileTemplateArgumentImpl, newFileTemplateArgumentImpl } from './fileTemplateArgument';\n\n\n/**\n * Defines a FileTemplate. The template structure is defined by the linked `template_file`, which must be in the same org as the template spec. `template_file` may be empty, in which case the template will not render. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FileTemplateSpec { \n    /**\n     * The list of parameters this template will accept. Note that by default the `user.X` and `resource.X` parameters are always accepted. \n     */\n    template_parameters: Array<FileTemplateParameter>;\n    /**\n     * The content type to return on read. The template engine will automatically determine whether the content needs to be extracted. \n     */\n    template_content_type: string;\n    /**\n     * A list of arguments to provide by default when rendering the template. These may be overridden by the render request. \n     */\n    default_arguments: Array<FileTemplateArgument>;\n    /**\n     * the purpose of the template. helps with deciding whether it should be used for a given operation. \n     */\n    purpose: string;\n    /**\n     * Unique identifier\n     */\n    template_file?: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * Optionally used by a client to describe the template files to users. For example, the client may provide an action button saying: \\\"Download Project File\\\" \n     */\n    descriptive_text: string;\n    /**\n     * Objects associated with this file template. Useful for finding relevant templates. \n     */\n    associated_objects?: Array<FileTemplateAssociation>;\n    /**\n     * What to call the rendered file when downloading. \n     */\n    rendered_file_name: string;\n    /**\n     * The delimiter used to identify placeholders. For example, if the delimiter is $, the possible placeholders for parameter `foo` are: ```   $foo   ${foo} ``` If the delimiter is %$ then the placeholders for `foo` are: ``` %$foo %${foo} ``` \n     */\n    delimiter?: string;\n}\n\nexport interface FileTemplateSpec extends _FileTemplateSpec {\n    _builtin_original?: _FileTemplateSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FileTemplateSpecImpl  implements _FileTemplateSpec {\n    _builtin_original?: _FileTemplateSpec = undefined;\n    public template_parameters: Array<FileTemplateParameter> ;\n    public template_content_type: string ;\n    public default_arguments: Array<FileTemplateArgument> ;\n    public purpose: string ;\n    public template_file: string  | undefined ;\n    public org_id: string ;\n    public descriptive_text: string ;\n    public associated_objects: Array<FileTemplateAssociation>  | undefined ;\n    public rendered_file_name: string ;\n    public delimiter: string  | undefined ;\n    constructor(base: _FileTemplateSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'template_parameters') >= 0) {\n            if (base.template_parameters) {\n                this.template_parameters = base.template_parameters.map((original) => newFileTemplateParameterImpl(original));\n            } else {\n                this.template_parameters = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'template_content_type') >= 0) {\n            this.template_content_type = base.template_content_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'default_arguments') >= 0) {\n            if (base.default_arguments) {\n                this.default_arguments = base.default_arguments.map((original) => newFileTemplateArgumentImpl(original));\n            } else {\n                this.default_arguments = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'purpose') >= 0) {\n            this.purpose = base.purpose;\n        }\n        if (Object.keys(base).findIndex(key => key === 'template_file') >= 0) {\n            this.template_file = base.template_file;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'descriptive_text') >= 0) {\n            this.descriptive_text = base.descriptive_text;\n        }\n        if (Object.keys(base).findIndex(key => key === 'associated_objects') >= 0) {\n            if (base.associated_objects) {\n                this.associated_objects = base.associated_objects.map((original) => newFileTemplateAssociationImpl(original));\n            } else {\n                this.associated_objects = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'rendered_file_name') >= 0) {\n            this.rendered_file_name = base.rendered_file_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'delimiter') >= 0) {\n            this.delimiter = base.delimiter;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.template_parameters !== undefined) {\n            for (const item of this.template_parameters) {\n                if (item !== undefined && (item as FileTemplateParameterImpl)._remove_builtin_extensions !== undefined) {\n                    (item as FileTemplateParameterImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.default_arguments !== undefined) {\n            for (const item of this.default_arguments) {\n                if (item !== undefined && (item as FileTemplateArgumentImpl)._remove_builtin_extensions !== undefined) {\n                    (item as FileTemplateArgumentImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.associated_objects !== undefined) {\n            for (const item of this.associated_objects) {\n                if (item !== undefined && (item as FileTemplateAssociationImpl)._remove_builtin_extensions !== undefined) {\n                    (item as FileTemplateAssociationImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newFileTemplateSpecImpl(base: _FileTemplateSpec): FileTemplateSpecImpl {\n    return new FileTemplateSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Controls how a file is exposed to users. This field can be configured with the following values:    - `public`: The file is available to any users, whether or not they     are authenticated. It is accessible via a public URI.   - `private`: The file is only available to users who have been granted     permission to access it explicitly, or through a role their organisation     has assigned to them. It can only be accessed by downloading it through     the API. Changing this field after the file has been uploaded has no effect. \n */\nexport type _FileVisibility = 'public' | 'private';\nexport type FileVisibility = _FileVisibility\n\nexport type FileVisibilityImpl = FileVisibility;\nexport const FileVisibility = {\n    public: 'public' as FileVisibility,\n    private: 'private' as FileVisibility\n};\n\nexport function newFileVisibilityImpl(base: _FileVisibility): FileVisibilityImpl {\n    return base;\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _FormInjectionConfig, FormInjectionConfig, FormInjectionConfigImpl, newFormInjectionConfigImpl } from './formInjectionConfig';\n\n\n/**\n * Configuration specific to authenticate form injection \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FormInjection { \n    /**\n     * Inject the username/password credentials into the http form. \n     */\n    inject_credentials?: boolean;\n    /**\n     * The credential for the username field \n     */\n    username_credential?: string;\n    /**\n     * The credential for the password field \n     */\n    password_credential?: string;\n    /**\n     * The field name used for mapping to a username. \n     */\n    username_field?: string;\n    /**\n     * The field name used for mapping to a password \n     */\n    password_field?: string;\n    config?: FormInjectionConfig;\n}\n\nexport interface FormInjection extends _FormInjection {\n    _builtin_original?: _FormInjection;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FormInjectionImpl  implements _FormInjection {\n    _builtin_original?: _FormInjection = undefined;\n    public inject_credentials: boolean  | undefined ;\n    public username_credential: string  | undefined ;\n    public password_credential: string  | undefined ;\n    public username_field: string  | undefined ;\n    public password_field: string  | undefined ;\n    public config: FormInjectionConfig  | undefined ;\n    constructor(base: _FormInjection) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'inject_credentials') >= 0) {\n            this.inject_credentials = base.inject_credentials;\n        }\n        if (Object.keys(base).findIndex(key => key === 'username_credential') >= 0) {\n            this.username_credential = base.username_credential;\n        }\n        if (Object.keys(base).findIndex(key => key === 'password_credential') >= 0) {\n            this.password_credential = base.password_credential;\n        }\n        if (Object.keys(base).findIndex(key => key === 'username_field') >= 0) {\n            this.username_field = base.username_field;\n        }\n        if (Object.keys(base).findIndex(key => key === 'password_field') >= 0) {\n            this.password_field = base.password_field;\n        }\n        if (Object.keys(base).findIndex(key => key === 'config') >= 0) {\n            this.config = base.config;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFormInjectionImpl(base: _FormInjection): FormInjectionImpl {\n    return new FormInjectionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configuration specific to form injection \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FormInjectionConfig { \n    /**\n     * A query selector to run as argument to document.querySelector(), to find the  element associated with the username input. \n     */\n    username_query_selector?: string | null;\n    /**\n     * A query selector to run as argument to document.querySelector(), to find the  element associated with the password input. \n     */\n    password_query_selector?: string | null;\n    /**\n     * A next selector specific for a username. \n     */\n    username_next_selector?: string;\n    /**\n     * A next selector specific for a password. \n     */\n    password_next_selector?: string;\n    /**\n     * A submit selector for certain types of login forms \n     */\n    submit_selector?: string;\n    /**\n     * A login selector for certain types of login forms \n     */\n    login_selector?: string;\n}\n\nexport interface FormInjectionConfig extends _FormInjectionConfig {\n    _builtin_original?: _FormInjectionConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FormInjectionConfigImpl  implements _FormInjectionConfig {\n    _builtin_original?: _FormInjectionConfig = undefined;\n    public username_query_selector: string | null  | undefined ;\n    public password_query_selector: string | null  | undefined ;\n    public username_next_selector: string  | undefined ;\n    public password_next_selector: string  | undefined ;\n    public submit_selector: string  | undefined ;\n    public login_selector: string  | undefined ;\n    constructor(base: _FormInjectionConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'username_query_selector') >= 0) {\n            this.username_query_selector = base.username_query_selector;\n        }\n        if (Object.keys(base).findIndex(key => key === 'password_query_selector') >= 0) {\n            this.password_query_selector = base.password_query_selector;\n        }\n        if (Object.keys(base).findIndex(key => key === 'username_next_selector') >= 0) {\n            this.username_next_selector = base.username_next_selector;\n        }\n        if (Object.keys(base).findIndex(key => key === 'password_next_selector') >= 0) {\n            this.password_next_selector = base.password_next_selector;\n        }\n        if (Object.keys(base).findIndex(key => key === 'submit_selector') >= 0) {\n            this.submit_selector = base.submit_selector;\n        }\n        if (Object.keys(base).findIndex(key => key === 'login_selector') >= 0) {\n            this.login_selector = base.login_selector;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newFormInjectionConfigImpl(base: _FormInjectionConfig): FormInjectionConfigImpl {\n    return new FormInjectionConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Controls whether an object is allowed to render a page inside another container such as a `<frame>`. Corresponds to the X-Frame-Options header. This can be used to prevent a site from being embedded in another, or to prevent click jacking. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _FrameOptionsSettings { \n    /**\n     * Whether to apply the FrameOptionsSettings. If false, no settings will be applied. Settings applied by the application itself will take effect. \n     */\n    enabled: boolean;\n    /**\n     * Controls the value of the X-Frame-Options header. - `deny`: Denies ever loading the site from within a frame - `sameorigin`: Can only load the site within a frame on the same origin as the page   itself. - `clear`: Removes the X-Frame-Options header from the server\\'s response if present. - `override`: Use the value specified in the override field. If it is not present, the   header will be set to an empty string. \n     */\n    mode: FrameOptionsSettings.ModeEnum;\n    /**\n     * Set a specific value for the X-Frame-Options header.\n     */\n    override?: string | null;\n}\n\nexport interface FrameOptionsSettings extends _FrameOptionsSettings {\n    _builtin_original?: _FrameOptionsSettings;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class FrameOptionsSettingsImpl  implements _FrameOptionsSettings {\n    _builtin_original?: _FrameOptionsSettings = undefined;\n    public enabled: boolean ;\n    public mode: FrameOptionsSettings.ModeEnum ;\n    public override: string | null  | undefined ;\n    constructor(base: _FrameOptionsSettings) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mode') >= 0) {\n            this.mode = base.mode;\n        }\n        if (Object.keys(base).findIndex(key => key === 'override') >= 0) {\n            this.override = base.override;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace FrameOptionsSettings {\n    export type ModeEnum = 'deny' | 'sameorigin' | 'clear' | 'override';\n    export const ModeEnum = {\n        deny: 'deny' as ModeEnum,\n        sameorigin: 'sameorigin' as ModeEnum,\n        clear: 'clear' as ModeEnum,\n        override: 'override' as ModeEnum\n    };\n}\n\n\nexport function newFrameOptionsSettingsImpl(base: _FrameOptionsSettings): FrameOptionsSettingsImpl {\n    return new FrameOptionsSettingsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UpstreamUserIdentitySpec, UpstreamUserIdentitySpec, UpstreamUserIdentitySpecImpl, newUpstreamUserIdentitySpecImpl } from './upstreamUserIdentitySpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\n\n\n/**\n * A user\\'s identity in an upstream identity provider. A user in the system may be tied to multiple upstream sources of identity. For example, the user may have both a google account and a github account. They can link these accounts by tying the upstream identities to the identity of the user in this system. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UpstreamUserIdentity { \n    metadata?: MetadataWithId;\n    spec: UpstreamUserIdentitySpec;\n}\n\nexport interface UpstreamUserIdentity extends _UpstreamUserIdentity {\n    _builtin_original?: _UpstreamUserIdentity;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UpstreamUserIdentityImpl  implements _UpstreamUserIdentity {\n    _builtin_original?: _UpstreamUserIdentity = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: UpstreamUserIdentitySpec ;\n    constructor(base: _UpstreamUserIdentity) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUpstreamUserIdentityImpl(base: _UpstreamUserIdentity): UpstreamUserIdentityImpl {\n    return new UpstreamUserIdentityImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _InheritableUserConfig, InheritableUserConfig, InheritableUserConfigImpl, newInheritableUserConfigImpl } from './inheritableUserConfig';\nimport { _UserIdentity, UserIdentity, UserIdentityImpl, newUserIdentityImpl } from './userIdentity';\nimport { _UpstreamUserIdentity, UpstreamUserIdentity, UpstreamUserIdentityImpl, newUpstreamUserIdentityImpl } from './upstreamUserIdentity';\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _GroupMember { \n    /**\n     * Unique identifier\n     */\n    readonly id?: string;\n    /**\n     * The unique id of the Organisation to which this user belongs. \n     */\n    org_id?: string;\n    /**\n     * User\\'s first name\n     */\n    first_name?: string;\n    /**\n     * User\\'s last name\n     */\n    last_name?: string;\n    /**\n     * User\\'s full name, combination of first and last name\n     */\n    full_name?: string;\n    /**\n     * User\\'s email address\n     */\n    email?: string;\n    /**\n     * A suitable, simplified name of the user that can be used to identify a user. For users of type \\\"user\\\", this would be the users email. For other user types (group), the first_name would be used as the display_name. This does introduce the possiblity that multiple users may have identical display names. In this situation, it would be up to the consumer of this to de-duplicate the users (such as also display the users email alongside).  examples:     display_name: user@example.com     display_name: all_users_group \n     */\n    readonly display_name?: string;\n    /**\n     * Type of user\n     */\n    readonly type?: GroupMember.TypeEnum;\n    /**\n     * The upstream identities this user can use to log in to the system. When a user logs in, their identity in this system will be determined by matching against this list. Note that this implies that entries in this list are globally unique. \n     */\n    readonly upstream_user_identities?: Array<UpstreamUserIdentity>;\n    inheritable_config?: InheritableUserConfig;\n}\n\nexport interface GroupMember extends _GroupMember {\n    _builtin_original?: _GroupMember;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class GroupMemberImpl  implements _GroupMember {\n    _builtin_original?: _GroupMember = undefined;\n    public readonly id: string  | undefined ;\n    public org_id: string  | undefined ;\n    public first_name: string  | undefined ;\n    public last_name: string  | undefined ;\n    public full_name: string  | undefined ;\n    public email: string  | undefined ;\n    public readonly display_name: string  | undefined ;\n    public readonly type: GroupMember.TypeEnum  | undefined ;\n    public readonly upstream_user_identities: Array<UpstreamUserIdentity>  | undefined ;\n    public inheritable_config: InheritableUserConfig  | undefined ;\n    constructor(base: _GroupMember) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'first_name') >= 0) {\n            this.first_name = base.first_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_name') >= 0) {\n            this.last_name = base.last_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'full_name') >= 0) {\n            this.full_name = base.full_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'email') >= 0) {\n            this.email = base.email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'display_name') >= 0) {\n            this.display_name = base.display_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'type') >= 0) {\n            this.type = base.type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_user_identities') >= 0) {\n            if (base.upstream_user_identities) {\n                this.upstream_user_identities = base.upstream_user_identities.map((original) => newUpstreamUserIdentityImpl(original));\n            } else {\n                this.upstream_user_identities = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'inheritable_config') >= 0) {\n            this.inheritable_config = base.inheritable_config;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.upstream_user_identities !== undefined) {\n            for (const item of this.upstream_user_identities) {\n                if (item !== undefined && (item as UpstreamUserIdentityImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UpstreamUserIdentityImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace GroupMember {\n    export type TypeEnum = 'user' | 'group' | 'sysgroup' | 'bigroup' | 'service_account' | 'support_user';\n    export const TypeEnum = {\n        user: 'user' as TypeEnum,\n        group: 'group' as TypeEnum,\n        sysgroup: 'sysgroup' as TypeEnum,\n        bigroup: 'bigroup' as TypeEnum,\n        service_account: 'service_account' as TypeEnum,\n        support_user: 'support_user' as TypeEnum\n    };\n}\n\n\nexport function newGroupMemberImpl(base: _GroupMember): GroupMemberImpl {\n    return new GroupMemberImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A UserAttribute is a generic named attribute associated with a user. It can take on any value. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserAttribute { \n    /**\n     * The name of the attribute. All attributes with the same name will be merged when reading the actual user record for this attribute such that only a single value for a given name will result. \n     */\n    name: string;\n    /**\n     * The value of the attribute. This is a generic field to allow for use of any data from an identity provider. \n     */\n    value: any | null;\n}\n\nexport interface UserAttribute extends _UserAttribute {\n    _builtin_original?: _UserAttribute;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserAttributeImpl  implements _UserAttribute {\n    _builtin_original?: _UserAttribute = undefined;\n    public name: string ;\n    public value: any | null ;\n    constructor(base: _UserAttribute) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'value') >= 0) {\n            this.value = base.value;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUserAttributeImpl(base: _UserAttribute): UserAttributeImpl {\n    return new UserAttributeImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _InheritableUserConfig, InheritableUserConfig, InheritableUserConfigImpl, newInheritableUserConfigImpl } from './inheritableUserConfig';\nimport { _UpstreamUserIdentity, UpstreamUserIdentity, UpstreamUserIdentityImpl, newUpstreamUserIdentityImpl } from './upstreamUserIdentity';\n\n\n/**\n * The core identity of a User in the system. Exactly one of these will exist per User.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserIdentity { \n    /**\n     * Unique identifier\n     */\n    readonly id?: string;\n    /**\n     * The unique id of the Organisation to which this user belongs. \n     */\n    org_id?: string;\n    /**\n     * User\\'s first name\n     */\n    first_name?: string;\n    /**\n     * User\\'s last name\n     */\n    last_name?: string;\n    /**\n     * User\\'s full name, combination of first and last name\n     */\n    full_name?: string;\n    /**\n     * User\\'s email address\n     */\n    email?: string;\n    /**\n     * A suitable, simplified name of the user that can be used to identify a user. For users of type \\\"user\\\", this would be the users email. For other user types (group), the first_name would be used as the display_name. This does introduce the possiblity that multiple users may have identical display names. In this situation, it would be up to the consumer of this to de-duplicate the users (such as also display the users email alongside).  examples:     display_name: user@example.com     display_name: all_users_group \n     */\n    readonly display_name?: string;\n    /**\n     * Type of user\n     */\n    readonly type?: UserIdentity.TypeEnum;\n    /**\n     * The upstream identities this user can use to log in to the system. When a user logs in, their identity in this system will be determined by matching against this list. Note that this implies that entries in this list are globally unique. \n     */\n    readonly upstream_user_identities?: Array<UpstreamUserIdentity>;\n    inheritable_config?: InheritableUserConfig;\n}\n\nexport interface UserIdentity extends _UserIdentity {\n    _builtin_original?: _UserIdentity;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserIdentityImpl  implements _UserIdentity {\n    _builtin_original?: _UserIdentity = undefined;\n    public readonly id: string  | undefined ;\n    public org_id: string  | undefined ;\n    public first_name: string  | undefined ;\n    public last_name: string  | undefined ;\n    public full_name: string  | undefined ;\n    public email: string  | undefined ;\n    public readonly display_name: string  | undefined ;\n    public readonly type: UserIdentity.TypeEnum  | undefined ;\n    public readonly upstream_user_identities: Array<UpstreamUserIdentity>  | undefined ;\n    public inheritable_config: InheritableUserConfig  | undefined ;\n    constructor(base: _UserIdentity) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'first_name') >= 0) {\n            this.first_name = base.first_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_name') >= 0) {\n            this.last_name = base.last_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'full_name') >= 0) {\n            this.full_name = base.full_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'email') >= 0) {\n            this.email = base.email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'display_name') >= 0) {\n            this.display_name = base.display_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'type') >= 0) {\n            this.type = base.type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_user_identities') >= 0) {\n            if (base.upstream_user_identities) {\n                this.upstream_user_identities = base.upstream_user_identities.map((original) => newUpstreamUserIdentityImpl(original));\n            } else {\n                this.upstream_user_identities = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'inheritable_config') >= 0) {\n            this.inheritable_config = base.inheritable_config;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.upstream_user_identities !== undefined) {\n            for (const item of this.upstream_user_identities) {\n                if (item !== undefined && (item as UpstreamUserIdentityImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UpstreamUserIdentityImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace UserIdentity {\n    export type TypeEnum = 'user' | 'group' | 'sysgroup' | 'bigroup' | 'service_account' | 'support_user';\n    export const TypeEnum = {\n        user: 'user' as TypeEnum,\n        group: 'group' as TypeEnum,\n        sysgroup: 'sysgroup' as TypeEnum,\n        bigroup: 'bigroup' as TypeEnum,\n        service_account: 'service_account' as TypeEnum,\n        support_user: 'support_user' as TypeEnum\n    };\n}\n\n\nexport function newUserIdentityImpl(base: _UserIdentity): UserIdentityImpl {\n    return new UserIdentityImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _GroupMember, GroupMember, GroupMemberImpl, newGroupMemberImpl } from './groupMember';\nimport { _InheritableUserConfig, InheritableUserConfig, InheritableUserConfigImpl, newInheritableUserConfigImpl } from './inheritableUserConfig';\nimport { _UserAttribute, UserAttribute, UserAttributeImpl, newUserAttributeImpl } from './userAttribute';\nimport { _UserIdentity, UserIdentity, UserIdentityImpl, newUserIdentityImpl } from './userIdentity';\nimport { _UpstreamUserIdentity, UpstreamUserIdentity, UpstreamUserIdentityImpl, newUpstreamUserIdentityImpl } from './upstreamUserIdentity';\nimport { _UserAttributes, UserAttributes, UserAttributesImpl, newUserAttributesImpl } from './userAttributes';\nimport { _UserStatusEnum, UserStatusEnum, UserStatusEnumImpl, newUserStatusEnumImpl } from './userStatusEnum';\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _Group { \n    /**\n     * List of members in the group\n     */\n    members?: Array<GroupMember>;\n    /**\n     * List of groups that the user is a member of\n     */\n    member_of?: Array<UserIdentity>;\n    /**\n     * Unique identifier\n     */\n    readonly id?: string;\n    /**\n     * External unique identifier\n     */\n    external_id?: string | null;\n    /**\n     * Indicates if the user is enabled or disabled. This field is managed by the backend based on the users configured status, along with the disabled_at_time property if that is set. \n     */\n    readonly enabled?: boolean;\n    status?: UserStatusEnum;\n    /**\n     * User\\'s first name\n     */\n    first_name?: string;\n    /**\n     * User\\'s last name\n     */\n    last_name?: string;\n    /**\n     * User\\'s full name, combination of first and last name\n     */\n    full_name?: string;\n    /**\n     * User\\'s email address\n     */\n    email?: string;\n    /**\n     * A suitable, simplified name of the user that can be used to identify a user. For users of type \\\"user\\\", this would be the users email. For other user types (group), the first_name would be used as the display_name. This does introduce the possiblity that multiple users may have identical display names. In this situation, it would be up to the consumer of this to de-duplicate the users (such as also display the users email alongside).  examples:     display_name: user@example.com     display_name: all_users_group \n     */\n    readonly display_name?: string;\n    /**\n     * Upstream IdP name\n     */\n    provider?: string | null;\n    /**\n     * An associative array mapping an application to a list of roles\n     */\n    roles?: { [key: string]: Array<string> | undefined; };\n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n    /**\n     * Type of user\n     */\n    readonly type?: Group.TypeEnum;\n    /**\n     * Creation time\n     */\n    readonly created?: Date;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n    /**\n     * Whether the user was automatically created as part of another process such as logging in. On creation, this flag being true serves to trigger any behaviour tied to automatically created users, such as addition to special groups. On read, it can serve to indicate whether the user was automatically created. On update it will ensure that the automatically triggered behaviour still holds true. \n     */\n    auto_created?: boolean;\n    /**\n     * System users are controlled by the Agilicus infrastructure as part of providing service. Typically administrators and end users will not interact directly with them, so they should be hidden from display, unless explicitly toggled on. \n     */\n    is_system_user?: boolean;\n    /**\n     * The upstream identities this user can use to log in to the system. When a user logs in, their identity in this system will be determined by matching against this list. Note that this implies that entries in this list are globally unique. \n     */\n    readonly upstream_user_identities?: Array<UpstreamUserIdentity>;\n    /**\n     * Whether the user will be added to sub organisations automatically. When set for a user that is a member of a particular organisation, subsequent creations of sub organisations will add this user to that suborgansation. \n     */\n    cascade?: boolean;\n    configured_attributes?: UserAttributes;\n    /**\n     * The live attributes of the user, as determined from all sources of attributes. A user\\'s attributes flow from all of their upstream_user_identities as well as the `configured_attributes` field. Attributes are merged by name. If two sources of attributes have an attribute with the same name, that attribute will be merged. For cases where a merge is not possible -- e.g. two attributes with different types -- the oldest source of identity will be used. The `configured_attributes` field is always considered the oldest, so it has priority. Further, the resulting items will be sorted in ascending order of name.  For example, considering a user with following two sources of attributes:  ``` older_upstream:   - name: manager     value: best-manager   - name: groups     value: [\\\"A\\\", \\\"B\\\"] newer_upstream:   - name: manager     value: other-manager   - name: groups     value: [\\\"C\\\"]   - name: age     value 32 ```  The resulting attributes will be:  ``` attributes:   - name: age     value 32   - name: groups     value: [\\\"A\\\", \\\"B\\\", \\\"C\\\"]   - name: manager     value: best-manager ``` \n     */\n    readonly attributes?: Array<UserAttribute>;\n    inheritable_config?: InheritableUserConfig;\n    inheritable_status?: InheritableUserConfig;\n    /**\n     * Optionally configure a user to be automatically disabled at a specific point in time. Any retrieval of the user object record past the disabled_at_time will result in the enabled property be set to false. \n     */\n    disabled_at_time?: Date | null;\n}\n\nexport interface Group extends _Group {\n    _builtin_original?: _Group;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class GroupImpl  implements _Group {\n    _builtin_original?: _Group = undefined;\n    public members: Array<GroupMember>  | undefined ;\n    public member_of: Array<UserIdentity>  | undefined ;\n    public readonly id: string  | undefined ;\n    public external_id: string | null  | undefined ;\n    public readonly enabled: boolean  | undefined ;\n    public status: UserStatusEnum  | undefined ;\n    public first_name: string  | undefined ;\n    public last_name: string  | undefined ;\n    public full_name: string  | undefined ;\n    public email: string  | undefined ;\n    public readonly display_name: string  | undefined ;\n    public provider: string | null  | undefined ;\n    public roles: { [key: string]: Array<string> | undefined; }  | undefined ;\n    public org_id: string  | undefined ;\n    public readonly type: Group.TypeEnum  | undefined ;\n    public readonly created: Date  | undefined ;\n    public readonly updated: Date  | undefined ;\n    public auto_created: boolean  | undefined ;\n    public is_system_user: boolean  | undefined ;\n    public readonly upstream_user_identities: Array<UpstreamUserIdentity>  | undefined ;\n    public cascade: boolean  | undefined ;\n    public configured_attributes: UserAttributes  | undefined ;\n    public readonly attributes: Array<UserAttribute>  | undefined ;\n    public inheritable_config: InheritableUserConfig  | undefined ;\n    public inheritable_status: InheritableUserConfig  | undefined ;\n    public disabled_at_time: Date | null  | undefined ;\n    constructor(base: _Group) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'members') >= 0) {\n            if (base.members) {\n                this.members = base.members.map((original) => newGroupMemberImpl(original));\n            } else {\n                this.members = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'member_of') >= 0) {\n            if (base.member_of) {\n                this.member_of = base.member_of.map((original) => newUserIdentityImpl(original));\n            } else {\n                this.member_of = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'external_id') >= 0) {\n            this.external_id = base.external_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'first_name') >= 0) {\n            this.first_name = base.first_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_name') >= 0) {\n            this.last_name = base.last_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'full_name') >= 0) {\n            this.full_name = base.full_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'email') >= 0) {\n            this.email = base.email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'display_name') >= 0) {\n            this.display_name = base.display_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'provider') >= 0) {\n            this.provider = base.provider;\n        }\n        if (Object.keys(base).findIndex(key => key === 'roles') >= 0) {\n            this.roles = base.roles;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'type') >= 0) {\n            this.type = base.type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'created') >= 0) {\n            this.created = base.created;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n        if (Object.keys(base).findIndex(key => key === 'auto_created') >= 0) {\n            this.auto_created = base.auto_created;\n        }\n        if (Object.keys(base).findIndex(key => key === 'is_system_user') >= 0) {\n            this.is_system_user = base.is_system_user;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_user_identities') >= 0) {\n            if (base.upstream_user_identities) {\n                this.upstream_user_identities = base.upstream_user_identities.map((original) => newUpstreamUserIdentityImpl(original));\n            } else {\n                this.upstream_user_identities = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'cascade') >= 0) {\n            this.cascade = base.cascade;\n        }\n        if (Object.keys(base).findIndex(key => key === 'configured_attributes') >= 0) {\n            this.configured_attributes = base.configured_attributes;\n        }\n        if (Object.keys(base).findIndex(key => key === 'attributes') >= 0) {\n            if (base.attributes) {\n                this.attributes = base.attributes.map((original) => newUserAttributeImpl(original));\n            } else {\n                this.attributes = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'inheritable_config') >= 0) {\n            this.inheritable_config = base.inheritable_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'inheritable_status') >= 0) {\n            this.inheritable_status = base.inheritable_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'disabled_at_time') >= 0) {\n            this.disabled_at_time = base.disabled_at_time;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.members !== undefined) {\n            for (const item of this.members) {\n                if (item !== undefined && (item as GroupMemberImpl)._remove_builtin_extensions !== undefined) {\n                    (item as GroupMemberImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.member_of !== undefined) {\n            for (const item of this.member_of) {\n                if (item !== undefined && (item as UserIdentityImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserIdentityImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.upstream_user_identities !== undefined) {\n            for (const item of this.upstream_user_identities) {\n                if (item !== undefined && (item as UpstreamUserIdentityImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UpstreamUserIdentityImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.attributes !== undefined) {\n            for (const item of this.attributes) {\n                if (item !== undefined && (item as UserAttributeImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserAttributeImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace Group {\n    export type TypeEnum = 'user' | 'group' | 'sysgroup' | 'bigroup' | 'service_account' | 'support_user';\n    export const TypeEnum = {\n        user: 'user' as TypeEnum,\n        group: 'group' as TypeEnum,\n        sysgroup: 'sysgroup' as TypeEnum,\n        bigroup: 'bigroup' as TypeEnum,\n        service_account: 'service_account' as TypeEnum,\n        support_user: 'support_user' as TypeEnum\n    };\n}\n\n\nexport function newGroupImpl(base: _Group): GroupImpl {\n    return new GroupImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _GroupMember, GroupMember, GroupMemberImpl, newGroupMemberImpl } from './groupMember';\n\n\n/**\n * Group\\'s data\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _GroupData { \n    /**\n     * List of members in the group\n     */\n    members?: Array<GroupMember>;\n}\n\nexport interface GroupData extends _GroupData {\n    _builtin_original?: _GroupData;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class GroupDataImpl  implements _GroupData {\n    _builtin_original?: _GroupData = undefined;\n    public members: Array<GroupMember>  | undefined ;\n    constructor(base: _GroupData) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'members') >= 0) {\n            if (base.members) {\n                this.members = base.members.map((original) => newGroupMemberImpl(original));\n            } else {\n                this.members = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.members !== undefined) {\n            for (const item of this.members) {\n                if (item !== undefined && (item as GroupMemberImpl)._remove_builtin_extensions !== undefined) {\n                    (item as GroupMemberImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newGroupDataImpl(base: _GroupData): GroupDataImpl {\n    return new GroupDataImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Information regarding the reconcile action take for a group\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _GroupReconcileRecord { \n    /**\n     * The name of the group\n     */\n    name?: string;\n    /**\n     * The unique id of the Organisation this group is associated with. \n     */\n    org_id?: string;\n    /**\n     * The unique id of the group \n     */\n    group_id?: string;\n}\n\nexport interface GroupReconcileRecord extends _GroupReconcileRecord {\n    _builtin_original?: _GroupReconcileRecord;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class GroupReconcileRecordImpl  implements _GroupReconcileRecord {\n    _builtin_original?: _GroupReconcileRecord = undefined;\n    public name: string  | undefined ;\n    public org_id: string  | undefined ;\n    public group_id: string  | undefined ;\n    constructor(base: _GroupReconcileRecord) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'group_id') >= 0) {\n            this.group_id = base.group_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newGroupReconcileRecordImpl(base: _GroupReconcileRecord): GroupReconcileRecordImpl {\n    return new GroupReconcileRecordImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An object that provides a mapping from a guid to a human readable name. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _GuidMetadata { \n    /**\n     * Unique identifier\n     */\n    guid?: string;\n    /**\n     * The organisation id this guid is a member of.\n     */\n    org_id?: string | null;\n    /**\n     * a string that specifies the collection associated with the guid.\n     */\n    guid_type?: string;\n    /**\n     * A uri to retreive the full guid object\n     */\n    uri?: string;\n    /**\n     * A name for a guid for a that is human readble.\n     */\n    name?: string;\n}\n\nexport interface GuidMetadata extends _GuidMetadata {\n    _builtin_original?: _GuidMetadata;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class GuidMetadataImpl  implements _GuidMetadata {\n    _builtin_original?: _GuidMetadata = undefined;\n    public guid: string  | undefined ;\n    public org_id: string | null  | undefined ;\n    public guid_type: string  | undefined ;\n    public uri: string  | undefined ;\n    public name: string  | undefined ;\n    constructor(base: _GuidMetadata) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'guid') >= 0) {\n            this.guid = base.guid;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'guid_type') >= 0) {\n            this.guid_type = base.guid_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'uri') >= 0) {\n            this.uri = base.uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newGuidMetadataImpl(base: _GuidMetadata): GuidMetadataImpl {\n    return new GuidMetadataImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The configuration for HTTP Strict Transport Security (HSTS). These control settings which help to prevent man-in-the-middle attacks by requiring that all accesses to the Application\\'s domains be made over HTTPS. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HSTSSettings { \n    /**\n     * Whether or not to send the HSTS header. If disabled, any HSTS headers set by the application will be passed through unchanged. \n     */\n    enabled: boolean;\n    /**\n     * The number of seconds for which to remember that accesses need to be over HTTPS. A value of 0 means that the browser should forget. \n     */\n    max_age_seconds: number;\n    /**\n     * Whether subdomains of the Application should be included in the HSTS restriction. \n     */\n    include_sub_domains: boolean;\n    /**\n     * Indicate to HSTS preload services that this application should be preloaded. \n     */\n    preload: boolean;\n}\n\nexport interface HSTSSettings extends _HSTSSettings {\n    _builtin_original?: _HSTSSettings;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HSTSSettingsImpl  implements _HSTSSettings {\n    _builtin_original?: _HSTSSettings = undefined;\n    public enabled: boolean ;\n    public max_age_seconds: number ;\n    public include_sub_domains: boolean ;\n    public preload: boolean ;\n    constructor(base: _HSTSSettings) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'max_age_seconds') >= 0) {\n            this.max_age_seconds = base.max_age_seconds;\n        }\n        if (Object.keys(base).findIndex(key => key === 'include_sub_domains') >= 0) {\n            this.include_sub_domains = base.include_sub_domains;\n        }\n        if (Object.keys(base).findIndex(key => key === 'preload') >= 0) {\n            this.preload = base.preload;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newHSTSSettingsImpl(base: _HSTSSettings): HSTSSettingsImpl {\n    return new HSTSSettingsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configuration for HTTP basic authentication (RFC7235). Systems using this will encode the provided username and password into the `Authorization` header of http requests according to the HTTP basic authentication scheme. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HTTPBasicAuth { \n    /**\n     * The user as which to authenticate\n     */\n    username: string;\n    /**\n     * The password with which to authenticate\n     */\n    password: string;\n}\n\nexport interface HTTPBasicAuth extends _HTTPBasicAuth {\n    _builtin_original?: _HTTPBasicAuth;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HTTPBasicAuthImpl  implements _HTTPBasicAuth {\n    _builtin_original?: _HTTPBasicAuth = undefined;\n    public username: string ;\n    public password: string ;\n    constructor(base: _HTTPBasicAuth) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'username') >= 0) {\n            this.username = base.username;\n        }\n        if (Object.keys(base).findIndex(key => key === 'password') >= 0) {\n            this.password = base.password;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newHTTPBasicAuthImpl(base: _HTTPBasicAuth): HTTPBasicAuthImpl {\n    return new HTTPBasicAuthImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configuration for HTTP bearer token authentication (rfc6750). Systems using this will encode the provided token into the `Authorization` header of http requests according to the HTTP bearer token authentication scheme. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HTTPBearerAuth { \n    /**\n     * The bearer token to use in requests. Should conform to b64token in rfc6750 section 2.1. \n     */\n    token: string;\n}\n\nexport interface HTTPBearerAuth extends _HTTPBearerAuth {\n    _builtin_original?: _HTTPBearerAuth;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HTTPBearerAuthImpl  implements _HTTPBearerAuth {\n    _builtin_original?: _HTTPBearerAuth = undefined;\n    public token: string ;\n    constructor(base: _HTTPBearerAuth) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'token') >= 0) {\n            this.token = base.token;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newHTTPBearerAuthImpl(base: _HTTPBearerAuth): HTTPBearerAuthImpl {\n    return new HTTPBearerAuthImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The number of times the server replied with a particular response code\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HTTPResponseCodeCounter { \n    /**\n     * The number of times the server replied with this response code. \n     */\n    count: number;\n    /**\n     * The response code. \n     */\n    response_code: number;\n}\n\nexport interface HTTPResponseCodeCounter extends _HTTPResponseCodeCounter {\n    _builtin_original?: _HTTPResponseCodeCounter;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HTTPResponseCodeCounterImpl  implements _HTTPResponseCodeCounter {\n    _builtin_original?: _HTTPResponseCodeCounter = undefined;\n    public count: number ;\n    public response_code: number ;\n    constructor(base: _HTTPResponseCodeCounter) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'count') >= 0) {\n            this.count = base.count;\n        }\n        if (Object.keys(base).findIndex(key => key === 'response_code') >= 0) {\n            this.response_code = base.response_code;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newHTTPResponseCodeCounterImpl(base: _HTTPResponseCodeCounter): HTTPResponseCodeCounterImpl {\n    return new HTTPResponseCodeCounterImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LatencyHistogram, LatencyHistogram, LatencyHistogramImpl, newLatencyHistogramImpl } from './latencyHistogram';\nimport { _HTTPResponseCodeCounter, HTTPResponseCodeCounter, HTTPResponseCodeCounterImpl, newHTTPResponseCodeCounterImpl } from './hTTPResponseCodeCounter';\n\n\n/**\n * Detailed statistics for http requests made to a server. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HTTPDetailedStats { \n    requests_latency?: LatencyHistogram;\n    /**\n     * Counters for each specific request response code. Only includes codes which the server has replied with. \n     */\n    requests_status_counters?: Array<HTTPResponseCodeCounter>;\n}\n\nexport interface HTTPDetailedStats extends _HTTPDetailedStats {\n    _builtin_original?: _HTTPDetailedStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HTTPDetailedStatsImpl  implements _HTTPDetailedStats {\n    _builtin_original?: _HTTPDetailedStats = undefined;\n    public requests_latency: LatencyHistogram  | undefined ;\n    public requests_status_counters: Array<HTTPResponseCodeCounter>  | undefined ;\n    constructor(base: _HTTPDetailedStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'requests_latency') >= 0) {\n            this.requests_latency = base.requests_latency;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requests_status_counters') >= 0) {\n            if (base.requests_status_counters) {\n                this.requests_status_counters = base.requests_status_counters.map((original) => newHTTPResponseCodeCounterImpl(original));\n            } else {\n                this.requests_status_counters = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.requests_status_counters !== undefined) {\n            for (const item of this.requests_status_counters) {\n                if (item !== undefined && (item as HTTPResponseCodeCounterImpl)._remove_builtin_extensions !== undefined) {\n                    (item as HTTPResponseCodeCounterImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newHTTPDetailedStatsImpl(base: _HTTPDetailedStats): HTTPDetailedStatsImpl {\n    return new HTTPDetailedStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ContentTypeOptionsSettings, ContentTypeOptionsSettings, ContentTypeOptionsSettingsImpl, newContentTypeOptionsSettingsImpl } from './contentTypeOptionsSettings';\nimport { _CrossOriginEmbedderPolicySettings, CrossOriginEmbedderPolicySettings, CrossOriginEmbedderPolicySettingsImpl, newCrossOriginEmbedderPolicySettingsImpl } from './crossOriginEmbedderPolicySettings';\nimport { _XSSSettings, XSSSettings, XSSSettingsImpl, newXSSSettingsImpl } from './xSSSettings';\nimport { _PermittedCrossDomainPoliciesSettings, PermittedCrossDomainPoliciesSettings, PermittedCrossDomainPoliciesSettingsImpl, newPermittedCrossDomainPoliciesSettingsImpl } from './permittedCrossDomainPoliciesSettings';\nimport { _CertificateTransparencySettings, CertificateTransparencySettings, CertificateTransparencySettingsImpl, newCertificateTransparencySettingsImpl } from './certificateTransparencySettings';\nimport { _CORSSettings, CORSSettings, CORSSettingsImpl, newCORSSettingsImpl } from './cORSSettings';\nimport { _CrossOriginResourcePolicySettings, CrossOriginResourcePolicySettings, CrossOriginResourcePolicySettingsImpl, newCrossOriginResourcePolicySettingsImpl } from './crossOriginResourcePolicySettings';\nimport { _CrossOriginOpenerPolicySettings, CrossOriginOpenerPolicySettings, CrossOriginOpenerPolicySettingsImpl, newCrossOriginOpenerPolicySettingsImpl } from './crossOriginOpenerPolicySettings';\nimport { _FrameOptionsSettings, FrameOptionsSettings, FrameOptionsSettingsImpl, newFrameOptionsSettingsImpl } from './frameOptionsSettings';\nimport { _CSPSettings, CSPSettings, CSPSettingsImpl, newCSPSettingsImpl } from './cSPSettings';\nimport { _ReferrerPolicySettings, ReferrerPolicySettings, ReferrerPolicySettingsImpl, newReferrerPolicySettingsImpl } from './referrerPolicySettings';\nimport { _HSTSSettings, HSTSSettings, HSTSSettingsImpl, newHSTSSettingsImpl } from './hSTSSettings';\n\n\n/**\n * Configuration of an HTTP Application\\'s security model.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HTTPSecuritySettings { \n    csp?: CSPSettings;\n    cors?: CORSSettings;\n    hsts?: HSTSSettings;\n    xss_protection?: XSSSettings;\n    certificate_transparency?: CertificateTransparencySettings;\n    frame_options?: FrameOptionsSettings;\n    content_type_options?: ContentTypeOptionsSettings;\n    permitted_cross_domain_policies?: PermittedCrossDomainPoliciesSettings;\n    coep?: CrossOriginEmbedderPolicySettings;\n    coop?: CrossOriginOpenerPolicySettings;\n    corp?: CrossOriginResourcePolicySettings;\n    referrer_policy?: ReferrerPolicySettings;\n}\n\nexport interface HTTPSecuritySettings extends _HTTPSecuritySettings {\n    _builtin_original?: _HTTPSecuritySettings;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HTTPSecuritySettingsImpl  implements _HTTPSecuritySettings {\n    _builtin_original?: _HTTPSecuritySettings = undefined;\n    public csp: CSPSettings  | undefined ;\n    public cors: CORSSettings  | undefined ;\n    public hsts: HSTSSettings  | undefined ;\n    public xss_protection: XSSSettings  | undefined ;\n    public certificate_transparency: CertificateTransparencySettings  | undefined ;\n    public frame_options: FrameOptionsSettings  | undefined ;\n    public content_type_options: ContentTypeOptionsSettings  | undefined ;\n    public permitted_cross_domain_policies: PermittedCrossDomainPoliciesSettings  | undefined ;\n    public coep: CrossOriginEmbedderPolicySettings  | undefined ;\n    public coop: CrossOriginOpenerPolicySettings  | undefined ;\n    public corp: CrossOriginResourcePolicySettings  | undefined ;\n    public referrer_policy: ReferrerPolicySettings  | undefined ;\n    constructor(base: _HTTPSecuritySettings) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'csp') >= 0) {\n            this.csp = base.csp;\n        }\n        if (Object.keys(base).findIndex(key => key === 'cors') >= 0) {\n            this.cors = base.cors;\n        }\n        if (Object.keys(base).findIndex(key => key === 'hsts') >= 0) {\n            this.hsts = base.hsts;\n        }\n        if (Object.keys(base).findIndex(key => key === 'xss_protection') >= 0) {\n            this.xss_protection = base.xss_protection;\n        }\n        if (Object.keys(base).findIndex(key => key === 'certificate_transparency') >= 0) {\n            this.certificate_transparency = base.certificate_transparency;\n        }\n        if (Object.keys(base).findIndex(key => key === 'frame_options') >= 0) {\n            this.frame_options = base.frame_options;\n        }\n        if (Object.keys(base).findIndex(key => key === 'content_type_options') >= 0) {\n            this.content_type_options = base.content_type_options;\n        }\n        if (Object.keys(base).findIndex(key => key === 'permitted_cross_domain_policies') >= 0) {\n            this.permitted_cross_domain_policies = base.permitted_cross_domain_policies;\n        }\n        if (Object.keys(base).findIndex(key => key === 'coep') >= 0) {\n            this.coep = base.coep;\n        }\n        if (Object.keys(base).findIndex(key => key === 'coop') >= 0) {\n            this.coop = base.coop;\n        }\n        if (Object.keys(base).findIndex(key => key === 'corp') >= 0) {\n            this.corp = base.corp;\n        }\n        if (Object.keys(base).findIndex(key => key === 'referrer_policy') >= 0) {\n            this.referrer_policy = base.referrer_policy;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newHTTPSecuritySettingsImpl(base: _HTTPSecuritySettings): HTTPSecuritySettingsImpl {\n    return new HTTPSecuritySettingsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * summary statistics for HTTP requests made to a server \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HTTPSummaryStats { \n    /**\n     * The number of bytes, including headers, received from the server\n     */\n    http_bytes_received?: number;\n    /**\n     * The number of bytes, including headers, sent to the server\n     */\n    http_bytes_sent?: number;\n    /**\n     * The total number of requests started\n     */\n    requests_started?: number;\n    /**\n     * The total number of requests finished\n     */\n    requests_finished?: number;\n    /**\n     * The number of requests which completed with a status code between 100 and 199 \n     */\n    requests_status_1xx?: number;\n    /**\n     * The number of requests which completed with a status code between 200 and 299 \n     */\n    requests_status_2xx?: number;\n    /**\n     * The number of requests which completed with a status code between 300 and 399 \n     */\n    requests_status_3xx?: number;\n    /**\n     * The number of requests which completed with a status code between 400 and 499 \n     */\n    requests_status_4xx?: number;\n    /**\n     * The number of requests which completed with a status code between 500 and 599 \n     */\n    requests_status_5xx?: number;\n    /**\n     * The number of requests which completed with an unknown status code \n     */\n    requests_status_unknown?: number;\n}\n\nexport interface HTTPSummaryStats extends _HTTPSummaryStats {\n    _builtin_original?: _HTTPSummaryStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HTTPSummaryStatsImpl  implements _HTTPSummaryStats {\n    _builtin_original?: _HTTPSummaryStats = undefined;\n    public http_bytes_received: number  | undefined ;\n    public http_bytes_sent: number  | undefined ;\n    public requests_started: number  | undefined ;\n    public requests_finished: number  | undefined ;\n    public requests_status_1xx: number  | undefined ;\n    public requests_status_2xx: number  | undefined ;\n    public requests_status_3xx: number  | undefined ;\n    public requests_status_4xx: number  | undefined ;\n    public requests_status_5xx: number  | undefined ;\n    public requests_status_unknown: number  | undefined ;\n    constructor(base: _HTTPSummaryStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'http_bytes_received') >= 0) {\n            this.http_bytes_received = base.http_bytes_received;\n        }\n        if (Object.keys(base).findIndex(key => key === 'http_bytes_sent') >= 0) {\n            this.http_bytes_sent = base.http_bytes_sent;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requests_started') >= 0) {\n            this.requests_started = base.requests_started;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requests_finished') >= 0) {\n            this.requests_finished = base.requests_finished;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requests_status_1xx') >= 0) {\n            this.requests_status_1xx = base.requests_status_1xx;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requests_status_2xx') >= 0) {\n            this.requests_status_2xx = base.requests_status_2xx;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requests_status_3xx') >= 0) {\n            this.requests_status_3xx = base.requests_status_3xx;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requests_status_4xx') >= 0) {\n            this.requests_status_4xx = base.requests_status_4xx;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requests_status_5xx') >= 0) {\n            this.requests_status_5xx = base.requests_status_5xx;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requests_status_unknown') >= 0) {\n            this.requests_status_unknown = base.requests_status_unknown;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newHTTPSummaryStatsImpl(base: _HTTPSummaryStats): HTTPSummaryStatsImpl {\n    return new HTTPSummaryStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _HostSpec, HostSpec, HostSpecImpl, newHostSpecImpl } from './hostSpec';\n\n\n/**\n * An object that identifies a device on a computer network. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Host { \n    metadata?: MetadataWithId;\n    spec: HostSpec;\n}\n\nexport interface Host extends _Host {\n    _builtin_original?: _Host;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HostImpl  implements _Host {\n    _builtin_original?: _Host = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: HostSpec ;\n    constructor(base: _Host) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newHostImpl(base: _Host): HostImpl {\n    return new HostImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _HostBundleStatus, HostBundleStatus, HostBundleStatusImpl, newHostBundleStatusImpl } from './hostBundleStatus';\nimport { _HostBundleSpec, HostBundleSpec, HostBundleSpecImpl, newHostBundleSpecImpl } from './hostBundleSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\n\n\n/**\n * A container for HostLabels. This allows retrieval and management of a collection of hosts associated with labels. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HostBundle { \n    metadata?: MetadataWithId;\n    spec: HostBundleSpec;\n    status?: HostBundleStatus;\n}\n\nexport interface HostBundle extends _HostBundle {\n    _builtin_original?: _HostBundle;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HostBundleImpl  implements _HostBundle {\n    _builtin_original?: _HostBundle = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: HostBundleSpec ;\n    public status: HostBundleStatus  | undefined ;\n    constructor(base: _HostBundle) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newHostBundleImpl(base: _HostBundle): HostBundleImpl {\n    return new HostBundleImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _HostBundle, HostBundle, HostBundleImpl, newHostBundleImpl } from './hostBundle';\n\n\n/**\n * The Client configuration associated with a list of hosts and their associated destinations. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HostBundleClientConfig { \n    bundle?: HostBundle;\n    /**\n     * The hosts file configuration format. Permitted values:    etc_hosts \n     */\n    configuration_format?: string;\n    /**\n     * The base64-encoded contents of the configuration file. \n     */\n    readonly configuration_file?: string;\n}\n\nexport interface HostBundleClientConfig extends _HostBundleClientConfig {\n    _builtin_original?: _HostBundleClientConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HostBundleClientConfigImpl  implements _HostBundleClientConfig {\n    _builtin_original?: _HostBundleClientConfig = undefined;\n    public bundle: HostBundle  | undefined ;\n    public configuration_format: string  | undefined ;\n    public readonly configuration_file: string  | undefined ;\n    constructor(base: _HostBundleClientConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'bundle') >= 0) {\n            this.bundle = base.bundle;\n        }\n        if (Object.keys(base).findIndex(key => key === 'configuration_format') >= 0) {\n            this.configuration_format = base.configuration_format;\n        }\n        if (Object.keys(base).findIndex(key => key === 'configuration_file') >= 0) {\n            this.configuration_file = base.configuration_file;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newHostBundleClientConfigImpl(base: _HostBundleClientConfig): HostBundleClientConfigImpl {\n    return new HostBundleClientConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _HostLabelSpec, HostLabelSpec, HostLabelSpecImpl, newHostLabelSpecImpl } from './hostLabelSpec';\n\n\n/**\n * A label that is part of a bundle \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HostBundleLabel { \n    /**\n     * if true, the hosts with the label are excluded from the bundle. When a label is excluded, it takes precendence over included rules, such that if a hosts were to labeled with both an exclude and not exclude label, the result would be that host to be excluded. \n     */\n    exclude?: boolean;\n    label?: HostLabelSpec;\n}\n\nexport interface HostBundleLabel extends _HostBundleLabel {\n    _builtin_original?: _HostBundleLabel;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HostBundleLabelImpl  implements _HostBundleLabel {\n    _builtin_original?: _HostBundleLabel = undefined;\n    public exclude: boolean  | undefined ;\n    public label: HostLabelSpec  | undefined ;\n    constructor(base: _HostBundleLabel) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'exclude') >= 0) {\n            this.exclude = base.exclude;\n        }\n        if (Object.keys(base).findIndex(key => key === 'label') >= 0) {\n            this.label = base.label;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newHostBundleLabelImpl(base: _HostBundleLabel): HostBundleLabelImpl {\n    return new HostBundleLabelImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _HostDestination { \n    /**\n     * A host or IP address that will be mapped to a particular host. \n     */\n    host?: string;\n}\n\nexport interface HostDestination extends _HostDestination {\n    _builtin_original?: _HostDestination;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HostDestinationImpl  implements _HostDestination {\n    _builtin_original?: _HostDestination = undefined;\n    public host: string  | undefined ;\n    constructor(base: _HostDestination) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'host') >= 0) {\n            this.host = base.host;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newHostDestinationImpl(base: _HostDestination): HostDestinationImpl {\n    return new HostDestinationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _HostBundleLabel, HostBundleLabel, HostBundleLabelImpl, newHostBundleLabelImpl } from './hostBundleLabel';\nimport { _HostDestination, HostDestination, HostDestinationImpl, newHostDestinationImpl } from './hostDestination';\n\n\n/**\n * The Specification for a HostBundle.  hosts are bundled based on the following:  - All labels that are \\'included\\' will build the list  - All \\'excluded\\' hosts will then be removed from the list \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HostBundleSpec { \n    /**\n     * An identifier used to associate with host bundle. \n     */\n    name: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * list of labels associated with this bundle\n     */\n    labels?: Array<HostBundleLabel>;\n    /**\n     * A list of host destinations associated with this bundle of hosts. \n     */\n    destination?: Array<HostDestination>;\n}\n\nexport interface HostBundleSpec extends _HostBundleSpec {\n    _builtin_original?: _HostBundleSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HostBundleSpecImpl  implements _HostBundleSpec {\n    _builtin_original?: _HostBundleSpec = undefined;\n    public name: string ;\n    public org_id: string ;\n    public labels: Array<HostBundleLabel>  | undefined ;\n    public destination: Array<HostDestination>  | undefined ;\n    constructor(base: _HostBundleSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'labels') >= 0) {\n            if (base.labels) {\n                this.labels = base.labels.map((original) => newHostBundleLabelImpl(original));\n            } else {\n                this.labels = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'destination') >= 0) {\n            if (base.destination) {\n                this.destination = base.destination.map((original) => newHostDestinationImpl(original));\n            } else {\n                this.destination = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.labels !== undefined) {\n            for (const item of this.labels) {\n                if (item !== undefined && (item as HostBundleLabelImpl)._remove_builtin_extensions !== undefined) {\n                    (item as HostBundleLabelImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.destination !== undefined) {\n            for (const item of this.destination) {\n                if (item !== undefined && (item as HostDestinationImpl)._remove_builtin_extensions !== undefined) {\n                    (item as HostDestinationImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newHostBundleSpecImpl(base: _HostBundleSpec): HostBundleSpecImpl {\n    return new HostBundleSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Host, Host, HostImpl, newHostImpl } from './host';\nimport { _HostDestination, HostDestination, HostDestinationImpl, newHostDestinationImpl } from './hostDestination';\n\n\n/**\n * The Status for a HostBundle. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HostBundleStatus { \n    /**\n     * list of hosts associated with this bundle\n     */\n    hosts?: Array<Host>;\n    /**\n     * A list of host destinations associated with this bundle of hosts. \n     */\n    destination?: Array<HostDestination>;\n}\n\nexport interface HostBundleStatus extends _HostBundleStatus {\n    _builtin_original?: _HostBundleStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HostBundleStatusImpl  implements _HostBundleStatus {\n    _builtin_original?: _HostBundleStatus = undefined;\n    public hosts: Array<Host>  | undefined ;\n    public destination: Array<HostDestination>  | undefined ;\n    constructor(base: _HostBundleStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'hosts') >= 0) {\n            if (base.hosts) {\n                this.hosts = base.hosts.map((original) => newHostImpl(original));\n            } else {\n                this.hosts = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'destination') >= 0) {\n            if (base.destination) {\n                this.destination = base.destination.map((original) => newHostDestinationImpl(original));\n            } else {\n                this.destination = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.hosts !== undefined) {\n            for (const item of this.hosts) {\n                if (item !== undefined && (item as HostImpl)._remove_builtin_extensions !== undefined) {\n                    (item as HostImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.destination !== undefined) {\n            for (const item of this.destination) {\n                if (item !== undefined && (item as HostDestinationImpl)._remove_builtin_extensions !== undefined) {\n                    (item as HostDestinationImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newHostBundleStatusImpl(base: _HostBundleStatus): HostBundleStatusImpl {\n    return new HostBundleStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _HostLabelSpec, HostLabelSpec, HostLabelSpecImpl, newHostLabelSpecImpl } from './hostLabelSpec';\nimport { _CommonMetadata, CommonMetadata, CommonMetadataImpl, newCommonMetadataImpl } from './commonMetadata';\n\n\n/**\n * An identifier used to associate with one or more hosts \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HostLabel { \n    metadata?: CommonMetadata;\n    spec?: HostLabelSpec;\n}\n\nexport interface HostLabel extends _HostLabel {\n    _builtin_original?: _HostLabel;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HostLabelImpl  implements _HostLabel {\n    _builtin_original?: _HostLabel = undefined;\n    public metadata: CommonMetadata  | undefined ;\n    public spec: HostLabelSpec  | undefined ;\n    constructor(base: _HostLabel) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newHostLabelImpl(base: _HostLabel): HostLabelImpl {\n    return new HostLabelImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The specification for a HostLabel. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HostLabelSpec { \n    /**\n     * An identifier used to associate with one or more hosts \n     */\n    name: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n}\n\nexport interface HostLabelSpec extends _HostLabelSpec {\n    _builtin_original?: _HostLabelSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HostLabelSpecImpl  implements _HostLabelSpec {\n    _builtin_original?: _HostLabelSpec = undefined;\n    public name: string ;\n    public org_id: string ;\n    constructor(base: _HostLabelSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newHostLabelSpecImpl(base: _HostLabelSpec): HostLabelSpecImpl {\n    return new HostLabelSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An org that can provide hosts\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HostOrg { \n    /**\n     * Unique identifier\n     */\n    id?: string;\n    /**\n     * organisation name\n     */\n    organisation?: string;\n}\n\nexport interface HostOrg extends _HostOrg {\n    _builtin_original?: _HostOrg;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HostOrgImpl  implements _HostOrg {\n    _builtin_original?: _HostOrg = undefined;\n    public id: string  | undefined ;\n    public organisation: string  | undefined ;\n    constructor(base: _HostOrg) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'organisation') >= 0) {\n            this.organisation = base.organisation;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newHostOrgImpl(base: _HostOrg): HostOrgImpl {\n    return new HostOrgImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Matches the host and prefix of an HTTP request. The host will normalize the port-part for standard schemes. `http://` normalises to port 80. `https://` normalises to port 443. For example, with   host: example.com   prefix: /absolute/path The following URLs will match:   http://example.com/absolute/path   http://example.com/absolute/path/subpath   http://example.com:80/absolute/path/subpath The following URLs will *not* match:   http://example2.com/absolute/path   http://example.com/absolute/other   http://example.com:8080/absolute/path    Note in particular, http://example.com:80/absolute/path matches because port 80 is the   standard http port, whereas http://example.com:8080/absolute/path does *not* match, because   8080 is not the standard http port. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HostPrefixRuleCondition { \n    /**\n     * The discriminator for the condition\n     */\n    condition_type: string;\n    /**\n     * A case insensitive host or IP address, possibly including a port. Note that if the host is an empty string, then it s considered a trivial match. \n     */\n    host: string;\n    /**\n     * A case-sensitive, absolute prefix to match against. The prefix cannot contain a query string. \n     */\n    prefix?: string;\n}\n\nexport interface HostPrefixRuleCondition extends _HostPrefixRuleCondition {\n    _builtin_original?: _HostPrefixRuleCondition;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HostPrefixRuleConditionImpl  implements _HostPrefixRuleCondition {\n    _builtin_original?: _HostPrefixRuleCondition = undefined;\n    public condition_type: string ;\n    public host: string ;\n    public prefix: string  | undefined ;\n    constructor(base: _HostPrefixRuleCondition) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'condition_type') >= 0) {\n            this.condition_type = base.condition_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'host') >= 0) {\n            this.host = base.host;\n        }\n        if (Object.keys(base).findIndex(key => key === 'prefix') >= 0) {\n            this.prefix = base.prefix;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newHostPrefixRuleConditionImpl(base: _HostPrefixRuleCondition): HostPrefixRuleConditionImpl {\n    return new HostPrefixRuleConditionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The specification for a Host. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HostSpec { \n    /**\n     * A domain as per RFC 1123. \n     */\n    hostname: string;\n    /**\n     * The transport-layer port on which to access the service.  This can defined as,     - a single port within the range 0-65535 (max port)    - a range of ports, eg. 5000-5005 \n     */\n    port?: string;\n    /**\n     * An optional path specific to this hostname entry. This field is optional and implementation specific, and its usage is dependent on the client implementation wishing to lookup a particular hostname + path. \n     */\n    path?: string;\n    /**\n     * list of labels associated with host\n     */\n    labels?: Array<string>;\n}\n\nexport interface HostSpec extends _HostSpec {\n    _builtin_original?: _HostSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HostSpecImpl  implements _HostSpec {\n    _builtin_original?: _HostSpec = undefined;\n    public hostname: string ;\n    public port: string  | undefined ;\n    public path: string  | undefined ;\n    public labels: Array<string>  | undefined ;\n    constructor(base: _HostSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'hostname') >= 0) {\n            this.hostname = base.hostname;\n        }\n        if (Object.keys(base).findIndex(key => key === 'port') >= 0) {\n            this.port = base.port;\n        }\n        if (Object.keys(base).findIndex(key => key === 'path') >= 0) {\n            this.path = base.path;\n        }\n        if (Object.keys(base).findIndex(key => key === 'labels') >= 0) {\n            this.labels = base.labels;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newHostSpecImpl(base: _HostSpec): HostSpecImpl {\n    return new HostSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _HttpRequestExtractorSource, HttpRequestExtractorSource, HttpRequestExtractorSourceImpl, newHttpRequestExtractorSourceImpl } from './httpRequestExtractorSource';\n\n\n/**\n * Specifies a piece of information to extract from a request. Gives it a name and a type. The extracted information is then used, by name, in a RuleMatcher. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HttpRequestExtractor { \n    /**\n     * The name of the extracted value.\n     */\n    name: string;\n    /**\n     * The expected type of the value. If the value does not match the given type, then it will not be populated for matching. By default, all values are converted from their javascript representation.  `any`: A value of any type `integer`: An integer value `string`: A string type `list`: A list value of any type `object`: an object value containing values of any type \n     */\n    value_type: HttpRequestExtractor.ValueTypeEnum;\n    source: HttpRequestExtractorSource;\n}\n\nexport interface HttpRequestExtractor extends _HttpRequestExtractor {\n    _builtin_original?: _HttpRequestExtractor;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HttpRequestExtractorImpl  implements _HttpRequestExtractor {\n    _builtin_original?: _HttpRequestExtractor = undefined;\n    public name: string ;\n    public value_type: HttpRequestExtractor.ValueTypeEnum ;\n    public source: HttpRequestExtractorSource ;\n    constructor(base: _HttpRequestExtractor) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'value_type') >= 0) {\n            this.value_type = base.value_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'source') >= 0) {\n            this.source = base.source;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace HttpRequestExtractor {\n    export type ValueTypeEnum = 'any' | 'integer' | 'string' | 'list' | 'object';\n    export const ValueTypeEnum = {\n        any: 'any' as ValueTypeEnum,\n        integer: 'integer' as ValueTypeEnum,\n        string: 'string' as ValueTypeEnum,\n        list: 'list' as ValueTypeEnum,\n        object: 'object' as ValueTypeEnum\n    };\n}\n\n\nexport function newHttpRequestExtractorImpl(base: _HttpRequestExtractor): HttpRequestExtractorImpl {\n    return new HttpRequestExtractorImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _TemplateExtraction, TemplateExtraction, TemplateExtractionImpl, newTemplateExtractionImpl } from './templateExtraction';\n\n\n/**\n * Specifies how to extract information from an http request, such as retrieving a component of a path \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HttpRequestExtractorSource { \n    /**\n     * The location in the request from which to retrieve the data.  - `path`: retrieve data from the request\\'s path - `query`: retrieve data from the request\\'s query string \n     */\n    location: HttpRequestExtractorSource.LocationEnum;\n    template_extraction?: TemplateExtraction;\n}\n\nexport interface HttpRequestExtractorSource extends _HttpRequestExtractorSource {\n    _builtin_original?: _HttpRequestExtractorSource;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HttpRequestExtractorSourceImpl  implements _HttpRequestExtractorSource {\n    _builtin_original?: _HttpRequestExtractorSource = undefined;\n    public location: HttpRequestExtractorSource.LocationEnum ;\n    public template_extraction: TemplateExtraction  | undefined ;\n    constructor(base: _HttpRequestExtractorSource) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'location') >= 0) {\n            this.location = base.location;\n        }\n        if (Object.keys(base).findIndex(key => key === 'template_extraction') >= 0) {\n            this.template_extraction = base.template_extraction;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace HttpRequestExtractorSource {\n    export type LocationEnum = 'path' | 'query';\n    export const LocationEnum = {\n        path: 'path' as LocationEnum,\n        query: 'query' as LocationEnum\n    };\n}\n\n\nexport function newHttpRequestExtractorSourceImpl(base: _HttpRequestExtractorSource): HttpRequestExtractorSourceImpl {\n    return new HttpRequestExtractorSourceImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _TemplatePath, TemplatePath, TemplatePathImpl, newTemplatePathImpl } from './templatePath';\nimport { _RuleMatcherList, RuleMatcherList, RuleMatcherListImpl, newRuleMatcherListImpl } from './ruleMatcherList';\nimport { _RuleQueryParameter, RuleQueryParameter, RuleQueryParameterImpl, newRuleQueryParameterImpl } from './ruleQueryParameter';\nimport { _RuleQueryBody, RuleQueryBody, RuleQueryBodyImpl, newRuleQueryBodyImpl } from './ruleQueryBody';\n\n\n/**\n * A rule condition applied to the attributes of an http request.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HttpRule { \n    /**\n     * Used to distinguish between different types of rule\n     */\n    rule_type: string;\n    /**\n     * The descriminator for an HttpRuleCondition\n     */\n    condition_type?: string;\n    /**\n     * The HTTP methods to allow. If any of the listed methods are matched, then this portion of the rule matches. \n     */\n    methods?: Array<HttpRule.MethodsEnum>;\n    /**\n     * regex for HTTP path. Can be templatized with jinja2 using definitions collection.\n     */\n    path_regex?: string;\n    path_template?: TemplatePath;\n    /**\n     * A set of constraints on the parameters specified in the query string.\n     */\n    query_parameters?: Array<RuleQueryParameter>;\n    body?: RuleQueryBody;\n    matchers?: RuleMatcherList;\n    /**\n     * Whether or not to include the query parameter in path operations such as regex matches. If `true`, then the query parameter will be treated as separate from the path. Otherwise, if the path constraints will evaluate all of the query parameters as part of the http path. For example, if a regex path constraint is `^/part1/part2$` and separate_query is true, then an input path of `/part1/part2?key=value` will pass. However, if separate_query is false, it will fail. If not present, defaults to false. \n     */\n    separate_query?: boolean;\n}\n\nexport interface HttpRule extends _HttpRule {\n    _builtin_original?: _HttpRule;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HttpRuleImpl  implements _HttpRule {\n    _builtin_original?: _HttpRule = undefined;\n    public rule_type: string ;\n    public condition_type: string  | undefined ;\n    public methods: Array<HttpRule.MethodsEnum>  | undefined ;\n    public path_regex: string  | undefined ;\n    public path_template: TemplatePath  | undefined ;\n    public query_parameters: Array<RuleQueryParameter>  | undefined ;\n    public body: RuleQueryBody  | undefined ;\n    public matchers: RuleMatcherList  | undefined ;\n    public separate_query: boolean  | undefined ;\n    constructor(base: _HttpRule) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'rule_type') >= 0) {\n            this.rule_type = base.rule_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'condition_type') >= 0) {\n            this.condition_type = base.condition_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'methods') >= 0) {\n            this.methods = base.methods;\n        }\n        if (Object.keys(base).findIndex(key => key === 'path_regex') >= 0) {\n            this.path_regex = base.path_regex;\n        }\n        if (Object.keys(base).findIndex(key => key === 'path_template') >= 0) {\n            this.path_template = base.path_template;\n        }\n        if (Object.keys(base).findIndex(key => key === 'query_parameters') >= 0) {\n            if (base.query_parameters) {\n                this.query_parameters = base.query_parameters.map((original) => newRuleQueryParameterImpl(original));\n            } else {\n                this.query_parameters = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'body') >= 0) {\n            this.body = base.body;\n        }\n        if (Object.keys(base).findIndex(key => key === 'matchers') >= 0) {\n            this.matchers = base.matchers;\n        }\n        if (Object.keys(base).findIndex(key => key === 'separate_query') >= 0) {\n            this.separate_query = base.separate_query;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.query_parameters !== undefined) {\n            for (const item of this.query_parameters) {\n                if (item !== undefined && (item as RuleQueryParameterImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RuleQueryParameterImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace HttpRule {\n    export type MethodsEnum = 'get' | 'put' | 'post' | 'delete' | 'head' | 'options' | 'connect' | 'trace' | 'patch' | 'copy' | 'lock' | 'mkcol' | 'move' | 'propfind' | 'proppatch' | 'unlock' | 'all';\n    export const MethodsEnum = {\n        get: 'get' as MethodsEnum,\n        put: 'put' as MethodsEnum,\n        post: 'post' as MethodsEnum,\n        delete: 'delete' as MethodsEnum,\n        head: 'head' as MethodsEnum,\n        options: 'options' as MethodsEnum,\n        connect: 'connect' as MethodsEnum,\n        trace: 'trace' as MethodsEnum,\n        patch: 'patch' as MethodsEnum,\n        copy: 'copy' as MethodsEnum,\n        lock: 'lock' as MethodsEnum,\n        mkcol: 'mkcol' as MethodsEnum,\n        move: 'move' as MethodsEnum,\n        propfind: 'propfind' as MethodsEnum,\n        proppatch: 'proppatch' as MethodsEnum,\n        unlock: 'unlock' as MethodsEnum,\n        all: 'all' as MethodsEnum\n    };\n}\n\n\nexport function newHttpRuleImpl(base: _HttpRule): HttpRuleImpl {\n    return new HttpRuleImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _TemplatePath, TemplatePath, TemplatePathImpl, newTemplatePathImpl } from './templatePath';\nimport { _RuleMatcherList, RuleMatcherList, RuleMatcherListImpl, newRuleMatcherListImpl } from './ruleMatcherList';\nimport { _RuleQueryParameter, RuleQueryParameter, RuleQueryParameterImpl, newRuleQueryParameterImpl } from './ruleQueryParameter';\nimport { _RuleQueryBody, RuleQueryBody, RuleQueryBodyImpl, newRuleQueryBodyImpl } from './ruleQueryBody';\nimport { _HttpRule, HttpRule, HttpRuleImpl, newHttpRuleImpl } from './httpRule';\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _HttpRuleCondition { \n    /**\n     * Used to distinguish between different types of rule\n     */\n    rule_type: string;\n    /**\n     * The descriminator for an HttpRuleCondition\n     */\n    condition_type?: string;\n    /**\n     * The HTTP methods to allow. If any of the listed methods are matched, then this portion of the rule matches. \n     */\n    methods?: Array<HttpRuleCondition.MethodsEnum>;\n    /**\n     * regex for HTTP path. Can be templatized with jinja2 using definitions collection.\n     */\n    path_regex?: string;\n    path_template?: TemplatePath;\n    /**\n     * A set of constraints on the parameters specified in the query string.\n     */\n    query_parameters?: Array<RuleQueryParameter>;\n    body?: RuleQueryBody;\n    matchers?: RuleMatcherList;\n    /**\n     * Whether or not to include the query parameter in path operations such as regex matches. If `true`, then the query parameter will be treated as separate from the path. Otherwise, if the path constraints will evaluate all of the query parameters as part of the http path. For example, if a regex path constraint is `^/part1/part2$` and separate_query is true, then an input path of `/part1/part2?key=value` will pass. However, if separate_query is false, it will fail. If not present, defaults to false. \n     */\n    separate_query?: boolean;\n}\n\nexport interface HttpRuleCondition extends _HttpRuleCondition {\n    _builtin_original?: _HttpRuleCondition;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HttpRuleConditionImpl  implements _HttpRuleCondition {\n    _builtin_original?: _HttpRuleCondition = undefined;\n    public rule_type: string ;\n    public condition_type: string  | undefined ;\n    public methods: Array<HttpRuleCondition.MethodsEnum>  | undefined ;\n    public path_regex: string  | undefined ;\n    public path_template: TemplatePath  | undefined ;\n    public query_parameters: Array<RuleQueryParameter>  | undefined ;\n    public body: RuleQueryBody  | undefined ;\n    public matchers: RuleMatcherList  | undefined ;\n    public separate_query: boolean  | undefined ;\n    constructor(base: _HttpRuleCondition) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'rule_type') >= 0) {\n            this.rule_type = base.rule_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'condition_type') >= 0) {\n            this.condition_type = base.condition_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'methods') >= 0) {\n            this.methods = base.methods;\n        }\n        if (Object.keys(base).findIndex(key => key === 'path_regex') >= 0) {\n            this.path_regex = base.path_regex;\n        }\n        if (Object.keys(base).findIndex(key => key === 'path_template') >= 0) {\n            this.path_template = base.path_template;\n        }\n        if (Object.keys(base).findIndex(key => key === 'query_parameters') >= 0) {\n            if (base.query_parameters) {\n                this.query_parameters = base.query_parameters.map((original) => newRuleQueryParameterImpl(original));\n            } else {\n                this.query_parameters = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'body') >= 0) {\n            this.body = base.body;\n        }\n        if (Object.keys(base).findIndex(key => key === 'matchers') >= 0) {\n            this.matchers = base.matchers;\n        }\n        if (Object.keys(base).findIndex(key => key === 'separate_query') >= 0) {\n            this.separate_query = base.separate_query;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.query_parameters !== undefined) {\n            for (const item of this.query_parameters) {\n                if (item !== undefined && (item as RuleQueryParameterImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RuleQueryParameterImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace HttpRuleCondition {\n    export type MethodsEnum = 'get' | 'put' | 'post' | 'delete' | 'head' | 'options' | 'connect' | 'trace' | 'patch' | 'copy' | 'lock' | 'mkcol' | 'move' | 'propfind' | 'proppatch' | 'unlock' | 'all';\n    export const MethodsEnum = {\n        get: 'get' as MethodsEnum,\n        put: 'put' as MethodsEnum,\n        post: 'post' as MethodsEnum,\n        delete: 'delete' as MethodsEnum,\n        head: 'head' as MethodsEnum,\n        options: 'options' as MethodsEnum,\n        connect: 'connect' as MethodsEnum,\n        trace: 'trace' as MethodsEnum,\n        patch: 'patch' as MethodsEnum,\n        copy: 'copy' as MethodsEnum,\n        lock: 'lock' as MethodsEnum,\n        mkcol: 'mkcol' as MethodsEnum,\n        move: 'move' as MethodsEnum,\n        propfind: 'propfind' as MethodsEnum,\n        proppatch: 'proppatch' as MethodsEnum,\n        unlock: 'unlock' as MethodsEnum,\n        all: 'all' as MethodsEnum\n    };\n}\n\n\nexport function newHttpRuleConditionImpl(base: _HttpRuleCondition): HttpRuleConditionImpl {\n    return new HttpRuleConditionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Contains the condition type for an HttpRuleCondition \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HttpRuleConditionType { \n    /**\n     * The descriminator for an HttpRuleCondition\n     */\n    condition_type: string;\n}\n\nexport interface HttpRuleConditionType extends _HttpRuleConditionType {\n    _builtin_original?: _HttpRuleConditionType;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HttpRuleConditionTypeImpl  implements _HttpRuleConditionType {\n    _builtin_original?: _HttpRuleConditionType = undefined;\n    public condition_type: string ;\n    constructor(base: _HttpRuleConditionType) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'condition_type') >= 0) {\n            this.condition_type = base.condition_type;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newHttpRuleConditionTypeImpl(base: _HttpRuleConditionType): HttpRuleConditionTypeImpl {\n    return new HttpRuleConditionTypeImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LicenseConstraint, LicenseConstraint, LicenseConstraintImpl, newLicenseConstraintImpl } from './licenseConstraint';\nimport { _License, License, LicenseImpl, newLicenseImpl } from './license';\n\n\n/**\n * The details of a license from the vantage point of a given organisation.  This takes into account all overrides at every level of the licensing hiearchy (organisation, license, billing account, etc) \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LicenseDetails { \n    /**\n     * Unique identifier\n     */\n    readonly org_id?: string;\n    license?: License;\n    /**\n     * The actual constraints \n     */\n    license_constraints?: Array<LicenseConstraint>;\n    /**\n     * A dictionary of values to pass in to constraint evaluation. These values will be provided to the constraints via the \\'input_vars\\' variable. Constraint variables are merged using the same priority as the constraints themselves. \n     */\n    constraint_variables?: { [key: string]: object | undefined; };\n}\n\nexport interface LicenseDetails extends _LicenseDetails {\n    _builtin_original?: _LicenseDetails;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LicenseDetailsImpl  implements _LicenseDetails {\n    _builtin_original?: _LicenseDetails = undefined;\n    public readonly org_id: string  | undefined ;\n    public license: License  | undefined ;\n    public license_constraints: Array<LicenseConstraint>  | undefined ;\n    public constraint_variables: { [key: string]: object | undefined; }  | undefined ;\n    constructor(base: _LicenseDetails) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'license') >= 0) {\n            this.license = base.license;\n        }\n        if (Object.keys(base).findIndex(key => key === 'license_constraints') >= 0) {\n            if (base.license_constraints) {\n                this.license_constraints = base.license_constraints.map((original) => newLicenseConstraintImpl(original));\n            } else {\n                this.license_constraints = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'constraint_variables') >= 0) {\n            this.constraint_variables = base.constraint_variables;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.license_constraints !== undefined) {\n            for (const item of this.license_constraints) {\n                if (item !== undefined && (item as LicenseConstraintImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LicenseConstraintImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newLicenseDetailsImpl(base: _LicenseDetails): LicenseDetailsImpl {\n    return new LicenseDetailsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LicenseDetails, LicenseDetails, LicenseDetailsImpl, newLicenseDetailsImpl } from './licenseDetails';\n\n\n/**\n * The license details matching the HypotheticalLicenseDetailsQuery\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HypotheticalLicenseDetails { \n    /**\n     * List of per-org license details\n     */\n    license_details: Array<LicenseDetails>;\n}\n\nexport interface HypotheticalLicenseDetails extends _HypotheticalLicenseDetails {\n    _builtin_original?: _HypotheticalLicenseDetails;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HypotheticalLicenseDetailsImpl  implements _HypotheticalLicenseDetails {\n    _builtin_original?: _HypotheticalLicenseDetails = undefined;\n    public license_details: Array<LicenseDetails> ;\n    constructor(base: _HypotheticalLicenseDetails) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'license_details') >= 0) {\n            if (base.license_details) {\n                this.license_details = base.license_details.map((original) => newLicenseDetailsImpl(original));\n            } else {\n                this.license_details = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.license_details !== undefined) {\n            for (const item of this.license_details) {\n                if (item !== undefined && (item as LicenseDetailsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LicenseDetailsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newHypotheticalLicenseDetailsImpl(base: _HypotheticalLicenseDetails): HypotheticalLicenseDetailsImpl {\n    return new HypotheticalLicenseDetailsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ProductTableVersion, ProductTableVersion, ProductTableVersionImpl, newProductTableVersionImpl } from './productTableVersion';\n\n\n/**\n * Defines a query which allows for returning the LicenseDetails under a hypothetical product table.  The results can be controlled in a few ways:  - constrain_to_version: can be used to test what would happen if all orgs using the provided    version were swapped to the provided hypothetical version.  This enables a few use-cases:    1. When modifying an existing table, only show the results for customers who would actually be affected by applying it.    2. See what would happen when migrating customers with other versions of the table to this version.    3. As a special case of number 2, see what would happen when making an entirely new version then migrating a set of customers to it. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _HypotheticalLicenseDetailsQuery { \n    product_table_version: ProductTableVersion;\n    /**\n     * List of licenses for which to get details\n     */\n    license_ids: Array<string>;\n    /**\n     * The version of a product table, used to uniquely identify it.\n     */\n    constrain_to_version?: string;\n}\n\nexport interface HypotheticalLicenseDetailsQuery extends _HypotheticalLicenseDetailsQuery {\n    _builtin_original?: _HypotheticalLicenseDetailsQuery;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class HypotheticalLicenseDetailsQueryImpl  implements _HypotheticalLicenseDetailsQuery {\n    _builtin_original?: _HypotheticalLicenseDetailsQuery = undefined;\n    public product_table_version: ProductTableVersion ;\n    public license_ids: Array<string> ;\n    public constrain_to_version: string  | undefined ;\n    constructor(base: _HypotheticalLicenseDetailsQuery) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'product_table_version') >= 0) {\n            this.product_table_version = base.product_table_version;\n        }\n        if (Object.keys(base).findIndex(key => key === 'license_ids') >= 0) {\n            this.license_ids = base.license_ids;\n        }\n        if (Object.keys(base).findIndex(key => key === 'constrain_to_version') >= 0) {\n            this.constrain_to_version = base.constrain_to_version;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newHypotheticalLicenseDetailsQueryImpl(base: _HypotheticalLicenseDetailsQuery): HypotheticalLicenseDetailsQueryImpl {\n    return new HypotheticalLicenseDetailsQueryImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Provides the dimension of an icon. Can help to choose a specific icon to use depending on how large the display is, for example. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _IconDimensions { \n    /**\n     * The width of the icon in pixels.\n     */\n    width: number;\n    /**\n     * The height of the icon in pixels.\n     */\n    height: number;\n}\n\nexport interface IconDimensions extends _IconDimensions {\n    _builtin_original?: _IconDimensions;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class IconDimensionsImpl  implements _IconDimensions {\n    _builtin_original?: _IconDimensions = undefined;\n    public width: number ;\n    public height: number ;\n    constructor(base: _IconDimensions) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'width') >= 0) {\n            this.width = base.width;\n        }\n        if (Object.keys(base).findIndex(key => key === 'height') >= 0) {\n            this.height = base.height;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newIconDimensionsImpl(base: _IconDimensions): IconDimensionsImpl {\n    return new IconDimensionsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A raw token and set of options for how to introspect the token\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _IdentityAssertion { \n    /**\n     * the authentication document ID representing the authentication document that generated this identity assertion.\n     */\n    authentication_document_id: string;\n    /**\n     * A JSON Web Token containing the identity assertion.\n     */\n    token: string;\n}\n\nexport interface IdentityAssertion extends _IdentityAssertion {\n    _builtin_original?: _IdentityAssertion;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class IdentityAssertionImpl  implements _IdentityAssertion {\n    _builtin_original?: _IdentityAssertion = undefined;\n    public authentication_document_id: string ;\n    public token: string ;\n    constructor(base: _IdentityAssertion) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'authentication_document_id') >= 0) {\n            this.authentication_document_id = base.authentication_document_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token') >= 0) {\n            this.token = base.token;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newIdentityAssertionImpl(base: _IdentityAssertion): IdentityAssertionImpl {\n    return new IdentityAssertionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The results of a successful identity assertion\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _IdentityAssertionResponse { \n    /**\n     * The user id specified by the identity assertion\n     */\n    user_id?: string;\n    /**\n     * The email of the user specified by the identity assertion\n     */\n    email?: string;\n    /**\n     * The username of the user specified by the identity assertion. This is a combination of the user\\'s first and last name in the form `first last`.\n     */\n    username?: string;\n    /**\n     * The org id specified by the identity assertion\n     */\n    org_id?: string;\n}\n\nexport interface IdentityAssertionResponse extends _IdentityAssertionResponse {\n    _builtin_original?: _IdentityAssertionResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class IdentityAssertionResponseImpl  implements _IdentityAssertionResponse {\n    _builtin_original?: _IdentityAssertionResponse = undefined;\n    public user_id: string  | undefined ;\n    public email: string  | undefined ;\n    public username: string  | undefined ;\n    public org_id: string  | undefined ;\n    constructor(base: _IdentityAssertionResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'email') >= 0) {\n            this.email = base.email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'username') >= 0) {\n            this.username = base.username;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newIdentityAssertionResponseImpl(base: _IdentityAssertionResponse): IdentityAssertionResponseImpl {\n    return new IdentityAssertionResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _InboxItemMetadata, InboxItemMetadata, InboxItemMetadataImpl, newInboxItemMetadataImpl } from './inboxItemMetadata';\nimport { _InboxItemSpec, InboxItemSpec, InboxItemSpecImpl, newInboxItemSpecImpl } from './inboxItemSpec';\nimport { _InboxItemStatus, InboxItemStatus, InboxItemStatusImpl, newInboxItemStatusImpl } from './inboxItemStatus';\n\n\n/**\n * An InboxItem contains a message and details about it such as whether it has been read. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _InboxItem { \n    metadata?: InboxItemMetadata;\n    spec: InboxItemSpec;\n    status?: InboxItemStatus;\n}\n\nexport interface InboxItem extends _InboxItem {\n    _builtin_original?: _InboxItem;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class InboxItemImpl  implements _InboxItem {\n    _builtin_original?: _InboxItem = undefined;\n    public metadata: InboxItemMetadata  | undefined ;\n    public spec: InboxItemSpec ;\n    public status: InboxItemStatus  | undefined ;\n    constructor(base: _InboxItem) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newInboxItemImpl(base: _InboxItem): InboxItemImpl {\n    return new InboxItemImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The metadata describing the inbox item.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _InboxItemMetadata { \n    /**\n     * Unique identifier\n     */\n    readonly user_id: string;\n    /**\n     * Unique identifier\n     */\n    readonly org_id?: string;\n    /**\n     * Unique identifier\n     */\n    readonly id: string;\n    /**\n     * Creation time\n     */\n    readonly created: Date;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n}\n\nexport interface InboxItemMetadata extends _InboxItemMetadata {\n    _builtin_original?: _InboxItemMetadata;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class InboxItemMetadataImpl  implements _InboxItemMetadata {\n    _builtin_original?: _InboxItemMetadata = undefined;\n    public readonly user_id: string ;\n    public readonly org_id: string  | undefined ;\n    public readonly id: string ;\n    public readonly created: Date ;\n    public readonly updated: Date  | undefined ;\n    constructor(base: _InboxItemMetadata) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'created') >= 0) {\n            this.created = base.created;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newInboxItemMetadataImpl(base: _InboxItemMetadata): InboxItemMetadataImpl {\n    return new InboxItemMetadataImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The modifiable details of an InboxItem\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _InboxItemSpec { \n    /**\n     * Whether or not this item has been read.\n     */\n    has_been_read: boolean;\n}\n\nexport interface InboxItemSpec extends _InboxItemSpec {\n    _builtin_original?: _InboxItemSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class InboxItemSpecImpl  implements _InboxItemSpec {\n    _builtin_original?: _InboxItemSpec = undefined;\n    public has_been_read: boolean ;\n    constructor(base: _InboxItemSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'has_been_read') >= 0) {\n            this.has_been_read = base.has_been_read;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newInboxItemSpecImpl(base: _InboxItemSpec): InboxItemSpecImpl {\n    return new InboxItemSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Message, Message, MessageImpl, newMessageImpl } from './message';\n\n\n/**\n * The read-only details of an InboxItem\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _InboxItemStatus { \n    message: Message;\n    /**\n     * Whether the message has expired\n     */\n    expired: boolean;\n}\n\nexport interface InboxItemStatus extends _InboxItemStatus {\n    _builtin_original?: _InboxItemStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class InboxItemStatusImpl  implements _InboxItemStatus {\n    _builtin_original?: _InboxItemStatus = undefined;\n    public message: Message ;\n    public expired: boolean ;\n    constructor(base: _InboxItemStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'message') >= 0) {\n            this.message = base.message;\n        }\n        if (Object.keys(base).findIndex(key => key === 'expired') >= 0) {\n            this.expired = base.expired;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newInboxItemStatusImpl(base: _InboxItemStatus): InboxItemStatusImpl {\n    return new InboxItemStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A Role included in another role\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _IncludedRole { \n    /**\n     * Unique identifier\n     */\n    role_id: string;\n}\n\nexport interface IncludedRole extends _IncludedRole {\n    _builtin_original?: _IncludedRole;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class IncludedRoleImpl  implements _IncludedRole {\n    _builtin_original?: _IncludedRole = undefined;\n    public role_id: string ;\n    constructor(base: _IncludedRole) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'role_id') >= 0) {\n            this.role_id = base.role_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newIncludedRoleImpl(base: _IncludedRole): IncludedRoleImpl {\n    return new IncludedRoleImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _InheritableUserConfig { \n    /**\n     * A description of this user\n     */\n    description?: string | null;\n}\n\nexport interface InheritableUserConfig extends _InheritableUserConfig {\n    _builtin_original?: _InheritableUserConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class InheritableUserConfigImpl  implements _InheritableUserConfig {\n    _builtin_original?: _InheritableUserConfig = undefined;\n    public description: string | null  | undefined ;\n    constructor(base: _InheritableUserConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newInheritableUserConfigImpl(base: _InheritableUserConfig): InheritableUserConfigImpl {\n    return new InheritableUserConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _X509RootCertificateStatus, X509RootCertificateStatus, X509RootCertificateStatusImpl, newX509RootCertificateStatusImpl } from './x509RootCertificateStatus';\nimport { _X509RootCertificateSpec, X509RootCertificateSpec, X509RootCertificateSpecImpl, newX509RootCertificateSpecImpl } from './x509RootCertificateSpec';\n\n\n/**\n * A root certificate used to establish a chain of trust to certificates issued by Agilicus \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _X509RootCertificate { \n    spec: X509RootCertificateSpec;\n    status?: X509RootCertificateStatus;\n}\n\nexport interface X509RootCertificate extends _X509RootCertificate {\n    _builtin_original?: _X509RootCertificate;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class X509RootCertificateImpl  implements _X509RootCertificate {\n    _builtin_original?: _X509RootCertificate = undefined;\n    public spec: X509RootCertificateSpec ;\n    public status: X509RootCertificateStatus  | undefined ;\n    constructor(base: _X509RootCertificate) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newX509RootCertificateImpl(base: _X509RootCertificate): X509RootCertificateImpl {\n    return new X509RootCertificateImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _X509RootCertificate, X509RootCertificate, X509RootCertificateImpl, newX509RootCertificateImpl } from './x509RootCertificate';\n\n\n/**\n * Response object for X509RootCertificate list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _InlineResponse200 { \n    /**\n     * List of X509RootCertificate\n     */\n    certificates: Array<X509RootCertificate>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface InlineResponse200 extends _InlineResponse200 {\n    _builtin_original?: _InlineResponse200;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class InlineResponse200Impl  implements _InlineResponse200 {\n    _builtin_original?: _InlineResponse200 = undefined;\n    public certificates: Array<X509RootCertificate> ;\n    public limit: number ;\n    constructor(base: _InlineResponse200) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'certificates') >= 0) {\n            if (base.certificates) {\n                this.certificates = base.certificates.map((original) => newX509RootCertificateImpl(original));\n            } else {\n                this.certificates = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.certificates !== undefined) {\n            for (const item of this.certificates) {\n                if (item !== undefined && (item as X509RootCertificateImpl)._remove_builtin_extensions !== undefined) {\n                    (item as X509RootCertificateImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newInlineResponse200Impl(base: _InlineResponse200): InlineResponse200Impl {\n    return new InlineResponse200Impl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The configuration associated the interception of a process. If both name_exact and value_regex are specified, both will be utilized in the match (boolean OR). Eg.     command == name_exact OR command.regex(value_regex) \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _InterceptorCommand { \n    /**\n     * The exact name of the command to match\n     */\n    name_exact?: string;\n    /**\n     * A regex describing the value to match the command.\n     */\n    value_regex?: string;\n}\n\nexport interface InterceptorCommand extends _InterceptorCommand {\n    _builtin_original?: _InterceptorCommand;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class InterceptorCommandImpl  implements _InterceptorCommand {\n    _builtin_original?: _InterceptorCommand = undefined;\n    public name_exact: string  | undefined ;\n    public value_regex: string  | undefined ;\n    constructor(base: _InterceptorCommand) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name_exact') >= 0) {\n            this.name_exact = base.name_exact;\n        }\n        if (Object.keys(base).findIndex(key => key === 'value_regex') >= 0) {\n            this.value_regex = base.value_regex;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newInterceptorCommandImpl(base: _InterceptorCommand): InterceptorCommandImpl {\n    return new InterceptorCommandImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _InterceptorCommand, InterceptorCommand, InterceptorCommandImpl, newInterceptorCommandImpl } from './interceptorCommand';\n\n\n/**\n * The configuration associated with an interceptor.  The allow_list and disallow_list control which commands, processes or children processes will be handled by the interceptor. In absense of the allow_list and disallow_list, all processes are automatically intercepted. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _InterceptorConfig { \n    /**\n     * A list of commands, when matched, will be handled by the interceptor\n     */\n    allow_list?: Array<InterceptorCommand>;\n    /**\n     * A list of commands, when matched, will not be handled by the interceptor\n     */\n    disallow_list?: Array<InterceptorCommand>;\n    /**\n     * Some programs require specific startup initialization procedures that cause the initial interceptor spawn + resume startup procedure to not function correctly. The typical behavior for this type of program is exhibited as the program terminates prematurely. This setting, when true, does a normal fork and will attach to the pid after the process has initially started.\n     */\n    fork_then_attach?: boolean;\n}\n\nexport interface InterceptorConfig extends _InterceptorConfig {\n    _builtin_original?: _InterceptorConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class InterceptorConfigImpl  implements _InterceptorConfig {\n    _builtin_original?: _InterceptorConfig = undefined;\n    public allow_list: Array<InterceptorCommand>  | undefined ;\n    public disallow_list: Array<InterceptorCommand>  | undefined ;\n    public fork_then_attach: boolean  | undefined ;\n    constructor(base: _InterceptorConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'allow_list') >= 0) {\n            if (base.allow_list) {\n                this.allow_list = base.allow_list.map((original) => newInterceptorCommandImpl(original));\n            } else {\n                this.allow_list = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'disallow_list') >= 0) {\n            if (base.disallow_list) {\n                this.disallow_list = base.disallow_list.map((original) => newInterceptorCommandImpl(original));\n            } else {\n                this.disallow_list = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'fork_then_attach') >= 0) {\n            this.fork_then_attach = base.fork_then_attach;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.allow_list !== undefined) {\n            for (const item of this.allow_list) {\n                if (item !== undefined && (item as InterceptorCommandImpl)._remove_builtin_extensions !== undefined) {\n                    (item as InterceptorCommandImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.disallow_list !== undefined) {\n            for (const item of this.disallow_list) {\n                if (item !== undefined && (item as InterceptorCommandImpl)._remove_builtin_extensions !== undefined) {\n                    (item as InterceptorCommandImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newInterceptorConfigImpl(base: _InterceptorConfig): InterceptorConfigImpl {\n    return new InterceptorConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorLocalBind, AgentConnectorLocalBind, AgentConnectorLocalBindImpl, newAgentConnectorLocalBindImpl } from './agentConnectorLocalBind';\n\n\n/**\n * Configures how to expose an internal network \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _InternalNetworkBind { \n    /**\n     * How to bind. Possible values:   - `disabled`: this network is not exposed at all   - `local`: this network is only exposed to the local host   - `all`: this network is exposed to any device which can reach the connector \n     */\n    bind_type: InternalNetworkBind.BindTypeEnum;\n    custom_bind?: AgentConnectorLocalBind;\n}\n\nexport interface InternalNetworkBind extends _InternalNetworkBind {\n    _builtin_original?: _InternalNetworkBind;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class InternalNetworkBindImpl  implements _InternalNetworkBind {\n    _builtin_original?: _InternalNetworkBind = undefined;\n    public bind_type: InternalNetworkBind.BindTypeEnum ;\n    public custom_bind: AgentConnectorLocalBind  | undefined ;\n    constructor(base: _InternalNetworkBind) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'bind_type') >= 0) {\n            this.bind_type = base.bind_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'custom_bind') >= 0) {\n            this.custom_bind = base.custom_bind;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace InternalNetworkBind {\n    export type BindTypeEnum = 'disabled' | 'local' | 'all' | 'custom';\n    export const BindTypeEnum = {\n        disabled: 'disabled' as BindTypeEnum,\n        local: 'local' as BindTypeEnum,\n        all: 'all' as BindTypeEnum,\n        custom: 'custom' as BindTypeEnum\n    };\n}\n\n\nexport function newInternalNetworkBindImpl(base: _InternalNetworkBind): InternalNetworkBindImpl {\n    return new InternalNetworkBindImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ApplicationServiceLocation, ApplicationServiceLocation, ApplicationServiceLocationImpl, newApplicationServiceLocationImpl } from './applicationServiceLocation';\nimport { _NetworkServiceConfig, NetworkServiceConfig, NetworkServiceConfigImpl, newNetworkServiceConfigImpl } from './networkServiceConfig';\nimport { _ConnectorRoute, ConnectorRoute, ConnectorRouteImpl, newConnectorRouteImpl } from './connectorRoute';\n\n\n/**\n * The detailed information used to program a connector to forward to an InternalNetwork \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _InternalNetworkForwarder { \n    /**\n     * A name identifying the protocol carried by this internal network\n     */\n    purpose: string;\n    config: NetworkServiceConfig;\n    /**\n     * The locations by which an end-user may reach the InternalNetwork \n     */\n    locations?: Array<ApplicationServiceLocation>;\n    /**\n     * The routes by which to reach this InternalNetwork. These routes can be joined with the locations to build the full tunnel URI. \n     */\n    routes: Array<ConnectorRoute>;\n}\n\nexport interface InternalNetworkForwarder extends _InternalNetworkForwarder {\n    _builtin_original?: _InternalNetworkForwarder;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class InternalNetworkForwarderImpl  implements _InternalNetworkForwarder {\n    _builtin_original?: _InternalNetworkForwarder = undefined;\n    public purpose: string ;\n    public config: NetworkServiceConfig ;\n    public locations: Array<ApplicationServiceLocation>  | undefined ;\n    public routes: Array<ConnectorRoute> ;\n    constructor(base: _InternalNetworkForwarder) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'purpose') >= 0) {\n            this.purpose = base.purpose;\n        }\n        if (Object.keys(base).findIndex(key => key === 'config') >= 0) {\n            this.config = base.config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'locations') >= 0) {\n            if (base.locations) {\n                this.locations = base.locations.map((original) => newApplicationServiceLocationImpl(original));\n            } else {\n                this.locations = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'routes') >= 0) {\n            if (base.routes) {\n                this.routes = base.routes.map((original) => newConnectorRouteImpl(original));\n            } else {\n                this.routes = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.locations !== undefined) {\n            for (const item of this.locations) {\n                if (item !== undefined && (item as ApplicationServiceLocationImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationServiceLocationImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.routes !== undefined) {\n            for (const item of this.routes) {\n                if (item !== undefined && (item as ConnectorRouteImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ConnectorRouteImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newInternalNetworkForwarderImpl(base: _InternalNetworkForwarder): InternalNetworkForwarderImpl {\n    return new InternalNetworkForwarderImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _NTPInternalNetworkRouting, NTPInternalNetworkRouting, NTPInternalNetworkRoutingImpl, newNTPInternalNetworkRoutingImpl } from './nTPInternalNetworkRouting';\n\n\n/**\n * Configures how a connector provides access to InternalNetworks, if at all. If acccess for A given InternalNetwork is provided, then the connector will listen accordingly, forwarding requests to the given service to its internal instance. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _InternalNetworkRouting { \n    ntp?: NTPInternalNetworkRouting;\n}\n\nexport interface InternalNetworkRouting extends _InternalNetworkRouting {\n    _builtin_original?: _InternalNetworkRouting;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class InternalNetworkRoutingImpl  implements _InternalNetworkRouting {\n    _builtin_original?: _InternalNetworkRouting = undefined;\n    public ntp: NTPInternalNetworkRouting  | undefined ;\n    constructor(base: _InternalNetworkRouting) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'ntp') >= 0) {\n            this.ntp = base.ntp;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newInternalNetworkRoutingImpl(base: _InternalNetworkRouting): InternalNetworkRoutingImpl {\n    return new InternalNetworkRoutingImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _InternalNetworkForwarder, InternalNetworkForwarder, InternalNetworkForwarderImpl, newInternalNetworkForwarderImpl } from './internalNetworkForwarder';\n\n\n/**\n * Instructs the connector on how to forward to internal networks \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _InternalNetworkRoutingInfo { \n    /**\n     * Each item in this array describes how to forwrad to an internal network. \n     */\n    forwarders: Array<InternalNetworkForwarder>;\n}\n\nexport interface InternalNetworkRoutingInfo extends _InternalNetworkRoutingInfo {\n    _builtin_original?: _InternalNetworkRoutingInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class InternalNetworkRoutingInfoImpl  implements _InternalNetworkRoutingInfo {\n    _builtin_original?: _InternalNetworkRoutingInfo = undefined;\n    public forwarders: Array<InternalNetworkForwarder> ;\n    constructor(base: _InternalNetworkRoutingInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'forwarders') >= 0) {\n            if (base.forwarders) {\n                this.forwarders = base.forwarders.map((original) => newInternalNetworkForwarderImpl(original));\n            } else {\n                this.forwarders = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.forwarders !== undefined) {\n            for (const item of this.forwarders) {\n                if (item !== undefined && (item as InternalNetworkForwarderImpl)._remove_builtin_extensions !== undefined) {\n                    (item as InternalNetworkForwarderImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newInternalNetworkRoutingInfoImpl(base: _InternalNetworkRoutingInfo): InternalNetworkRoutingInfoImpl {\n    return new InternalNetworkRoutingInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * InvalidPolicyTemplate is returned when the system is unable to map an otherwise known policy template to its details. This typically happens when the underlying policy componets have been deleted or corrupted. This templates strives to provide as much detail as possible about the original so that it may be recovered e.g. by replacing it with the desired output. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _InvalidPolicyTemplate { \n    /**\n     * The descriminator for the PolicyTemplate. Set this to `invalid`\n     */\n    template_type: string;\n    /**\n     * The original type of the template.\n     */\n    original_template_type: string;\n}\n\nexport interface InvalidPolicyTemplate extends _InvalidPolicyTemplate {\n    _builtin_original?: _InvalidPolicyTemplate;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class InvalidPolicyTemplateImpl  implements _InvalidPolicyTemplate {\n    _builtin_original?: _InvalidPolicyTemplate = undefined;\n    public template_type: string ;\n    public original_template_type: string ;\n    constructor(base: _InvalidPolicyTemplate) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'template_type') >= 0) {\n            this.template_type = base.template_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'original_template_type') >= 0) {\n            this.original_template_type = base.original_template_type;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newInvalidPolicyTemplateImpl(base: _InvalidPolicyTemplate): InvalidPolicyTemplateImpl {\n    return new InvalidPolicyTemplateImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _IpsecGatewayInterface, IpsecGatewayInterface, IpsecGatewayInterfaceImpl, newIpsecGatewayInterfaceImpl } from './ipsecGatewayInterface';\nimport { _IpsecConnectionSpec, IpsecConnectionSpec, IpsecConnectionSpecImpl, newIpsecConnectionSpecImpl } from './ipsecConnectionSpec';\n\n\n/**\n * An IPsec connection\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _IpsecConnection { \n    /**\n     * A descriptive name for the ipsec connection. The name must be a unique within a connectors connections. \n     */\n    name: string;\n    /**\n     * Allows inheriting from a named spec object. If any configuration in this object is Null or undefined, it will inherit from the named source that is part of the connector. Loops are not permitted, ie. A->B->A, and will result in a bad request. \n     */\n    inherit_from?: string;\n    gateway_interface?: IpsecGatewayInterface;\n    spec?: IpsecConnectionSpec;\n}\n\nexport interface IpsecConnection extends _IpsecConnection {\n    _builtin_original?: _IpsecConnection;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class IpsecConnectionImpl  implements _IpsecConnection {\n    _builtin_original?: _IpsecConnection = undefined;\n    public name: string ;\n    public inherit_from: string  | undefined ;\n    public gateway_interface: IpsecGatewayInterface  | undefined ;\n    public spec: IpsecConnectionSpec  | undefined ;\n    constructor(base: _IpsecConnection) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'inherit_from') >= 0) {\n            this.inherit_from = base.inherit_from;\n        }\n        if (Object.keys(base).findIndex(key => key === 'gateway_interface') >= 0) {\n            this.gateway_interface = base.gateway_interface;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newIpsecConnectionImpl(base: _IpsecConnection): IpsecConnectionImpl {\n    return new IpsecConnectionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An IP address range that defines a network range. Use CIDR notation when entering the block \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _IpsecConnectionIpv4Block { \n    /**\n     * ipv4 CIDR block\n     */\n    ipv4_address_block?: string;\n}\n\nexport interface IpsecConnectionIpv4Block extends _IpsecConnectionIpv4Block {\n    _builtin_original?: _IpsecConnectionIpv4Block;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class IpsecConnectionIpv4BlockImpl  implements _IpsecConnectionIpv4Block {\n    _builtin_original?: _IpsecConnectionIpv4Block = undefined;\n    public ipv4_address_block: string  | undefined ;\n    constructor(base: _IpsecConnectionIpv4Block) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'ipv4_address_block') >= 0) {\n            this.ipv4_address_block = base.ipv4_address_block;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newIpsecConnectionIpv4BlockImpl(base: _IpsecConnectionIpv4Block): IpsecConnectionIpv4BlockImpl {\n    return new IpsecConnectionIpv4BlockImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _CipherDiffieHellmanGroup, CipherDiffieHellmanGroup, CipherDiffieHellmanGroupImpl, newCipherDiffieHellmanGroupImpl } from './cipherDiffieHellmanGroup';\nimport { _CipherIntegrityAlgorithm, CipherIntegrityAlgorithm, CipherIntegrityAlgorithmImpl, newCipherIntegrityAlgorithmImpl } from './cipherIntegrityAlgorithm';\nimport { _IpsecConnectionIpv4Block, IpsecConnectionIpv4Block, IpsecConnectionIpv4BlockImpl, newIpsecConnectionIpv4BlockImpl } from './ipsecConnectionIpv4Block';\nimport { _CipherEncryptionAlgorithm, CipherEncryptionAlgorithm, CipherEncryptionAlgorithmImpl, newCipherEncryptionAlgorithmImpl } from './cipherEncryptionAlgorithm';\n\n\n/**\n * An IPsec specification for a connection. A connection is made from Agilicus cloud (local) to the customer (remote). \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _IpsecConnectionSpec { \n    /**\n     * The IKE version\n     */\n    ike_version?: IpsecConnectionSpec.IkeVersionEnum;\n    /**\n     * remote peer IPv4 address\n     */\n    remote_ipv4_address?: string;\n    /**\n     * remote peer DNS IPv4 address\n     */\n    remote_dns_ipv4_address?: string;\n    /**\n     * Remote peer healthcheck IPv4 address. The remote peer address must respond to ping (ICMP). This is used to validate the health of the connection. \n     */\n    remote_healthcheck_ipv4_address?: string;\n    ike_cipher_encryption_algorithm?: CipherEncryptionAlgorithm;\n    ike_cipher_integrity_algorithm?: CipherIntegrityAlgorithm;\n    ike_cipher_diffie_hellman_group?: CipherDiffieHellmanGroup;\n    esp_cipher_encryption_algorithm?: CipherEncryptionAlgorithm;\n    esp_cipher_integrity_algorithm?: CipherIntegrityAlgorithm;\n    esp_cipher_diffie_hellman_group?: CipherDiffieHellmanGroup;\n    /**\n     * Absolute time after which an IPsec security association expires, in minutes. \n     */\n    esp_lifetime?: number;\n    /**\n     * Absolute time after which an IKE security association expires, in minutes. \n     */\n    ike_lifetime?: number;\n    /**\n     * Allows control of IKE rekey. true is enabled, false is disabled. \n     */\n    ike_rekey?: boolean;\n    /**\n     * Allows control of IKE re-authentication. true is enabled, false is disabled. \n     */\n    ike_reauth?: boolean;\n    /**\n     * The IKE authentication type.\n     */\n    ike_authentication_type?: IpsecConnectionSpec.IkeAuthenticationTypeEnum;\n    /**\n     * ike preshared key\n     */\n    ike_preshared_key?: string;\n    /**\n     * Chain of trust certficates. Certificates are PEM encoded and are separated by a newline.  ie. A signed by B would be a string where A is first, newline, followed by B. \n     */\n    ike_chain_of_trust_certificates?: string;\n    /**\n     * certificate distinguished name (DN) Deprecated in favour of the generic ike_remote_identity field. \n     */\n    ike_certificate_dn?: string;\n    /**\n     * The identity of the remote peer. The remote peer will send credentials including this identity as part of the IKE authentication exchange.  The meaning of the identity depends on the authentication type.   - `ike_preshared_key`: This is an arbitrary value provisioned on the remote     peer, often a FQDN or email address. E.g. \\\"vpn.my-org.example.com\\\".   - `certificate`: This is the distinguished name (DN) of the entity certificate     presented by the remote peer. E.g. \\\"C=CA; O=Agilicus; CN=vpn-1.ca-1.agilicus.ca\\\". \n     */\n    ike_remote_identity?: string;\n    /**\n     * The local IP block that used by the tunnel. A tunnel requires a /30 subnet, within the following IP address ranges    192.168.0.0 -> 192.168.255.252   172.16.0.0 -> 172.31.255.255 \n     */\n    local_ipv4_block?: string;\n    /**\n     * One or more IP address ranges that define the peer network range. \n     */\n    remote_ipv4_ranges?: Array<IpsecConnectionIpv4Block>;\n    /**\n     * Controls if certificate exchange using hash is enabled. \n     */\n    use_cert_hash?: boolean;\n    /**\n     * Provides the local endpoint uri base for certificate hash lookup. See https://tools.ietf.org/html/rfc7296#section-3.6 (Hash and URL encoding). Note that since the ultimate URL is constructed through concatenation, the final `/` is important. \n     */\n    local_certificate_uribase?: string;\n    /**\n     * Provides the remote endpoint uri base for certificate hash lookup. See https://tools.ietf.org/html/rfc7296#section-3.6 (Hash and URL encoding). Note that since the ultimate URL is constructed through concatenation, the final `/` is important. \n     */\n    remote_certificate_uribase?: string;\n}\n\nexport interface IpsecConnectionSpec extends _IpsecConnectionSpec {\n    _builtin_original?: _IpsecConnectionSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class IpsecConnectionSpecImpl  implements _IpsecConnectionSpec {\n    _builtin_original?: _IpsecConnectionSpec = undefined;\n    public ike_version: IpsecConnectionSpec.IkeVersionEnum  | undefined ;\n    public remote_ipv4_address: string  | undefined ;\n    public remote_dns_ipv4_address: string  | undefined ;\n    public remote_healthcheck_ipv4_address: string  | undefined ;\n    public ike_cipher_encryption_algorithm: CipherEncryptionAlgorithm  | undefined ;\n    public ike_cipher_integrity_algorithm: CipherIntegrityAlgorithm  | undefined ;\n    public ike_cipher_diffie_hellman_group: CipherDiffieHellmanGroup  | undefined ;\n    public esp_cipher_encryption_algorithm: CipherEncryptionAlgorithm  | undefined ;\n    public esp_cipher_integrity_algorithm: CipherIntegrityAlgorithm  | undefined ;\n    public esp_cipher_diffie_hellman_group: CipherDiffieHellmanGroup  | undefined ;\n    public esp_lifetime: number  | undefined ;\n    public ike_lifetime: number  | undefined ;\n    public ike_rekey: boolean  | undefined ;\n    public ike_reauth: boolean  | undefined ;\n    public ike_authentication_type: IpsecConnectionSpec.IkeAuthenticationTypeEnum  | undefined ;\n    public ike_preshared_key: string  | undefined ;\n    public ike_chain_of_trust_certificates: string  | undefined ;\n    public ike_certificate_dn: string  | undefined ;\n    public ike_remote_identity: string  | undefined ;\n    public local_ipv4_block: string  | undefined ;\n    public remote_ipv4_ranges: Array<IpsecConnectionIpv4Block>  | undefined ;\n    public use_cert_hash: boolean  | undefined ;\n    public local_certificate_uribase: string  | undefined ;\n    public remote_certificate_uribase: string  | undefined ;\n    constructor(base: _IpsecConnectionSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'ike_version') >= 0) {\n            this.ike_version = base.ike_version;\n        }\n        if (Object.keys(base).findIndex(key => key === 'remote_ipv4_address') >= 0) {\n            this.remote_ipv4_address = base.remote_ipv4_address;\n        }\n        if (Object.keys(base).findIndex(key => key === 'remote_dns_ipv4_address') >= 0) {\n            this.remote_dns_ipv4_address = base.remote_dns_ipv4_address;\n        }\n        if (Object.keys(base).findIndex(key => key === 'remote_healthcheck_ipv4_address') >= 0) {\n            this.remote_healthcheck_ipv4_address = base.remote_healthcheck_ipv4_address;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ike_cipher_encryption_algorithm') >= 0) {\n            this.ike_cipher_encryption_algorithm = base.ike_cipher_encryption_algorithm;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ike_cipher_integrity_algorithm') >= 0) {\n            this.ike_cipher_integrity_algorithm = base.ike_cipher_integrity_algorithm;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ike_cipher_diffie_hellman_group') >= 0) {\n            this.ike_cipher_diffie_hellman_group = base.ike_cipher_diffie_hellman_group;\n        }\n        if (Object.keys(base).findIndex(key => key === 'esp_cipher_encryption_algorithm') >= 0) {\n            this.esp_cipher_encryption_algorithm = base.esp_cipher_encryption_algorithm;\n        }\n        if (Object.keys(base).findIndex(key => key === 'esp_cipher_integrity_algorithm') >= 0) {\n            this.esp_cipher_integrity_algorithm = base.esp_cipher_integrity_algorithm;\n        }\n        if (Object.keys(base).findIndex(key => key === 'esp_cipher_diffie_hellman_group') >= 0) {\n            this.esp_cipher_diffie_hellman_group = base.esp_cipher_diffie_hellman_group;\n        }\n        if (Object.keys(base).findIndex(key => key === 'esp_lifetime') >= 0) {\n            this.esp_lifetime = base.esp_lifetime;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ike_lifetime') >= 0) {\n            this.ike_lifetime = base.ike_lifetime;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ike_rekey') >= 0) {\n            this.ike_rekey = base.ike_rekey;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ike_reauth') >= 0) {\n            this.ike_reauth = base.ike_reauth;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ike_authentication_type') >= 0) {\n            this.ike_authentication_type = base.ike_authentication_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ike_preshared_key') >= 0) {\n            this.ike_preshared_key = base.ike_preshared_key;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ike_chain_of_trust_certificates') >= 0) {\n            this.ike_chain_of_trust_certificates = base.ike_chain_of_trust_certificates;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ike_certificate_dn') >= 0) {\n            this.ike_certificate_dn = base.ike_certificate_dn;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ike_remote_identity') >= 0) {\n            this.ike_remote_identity = base.ike_remote_identity;\n        }\n        if (Object.keys(base).findIndex(key => key === 'local_ipv4_block') >= 0) {\n            this.local_ipv4_block = base.local_ipv4_block;\n        }\n        if (Object.keys(base).findIndex(key => key === 'remote_ipv4_ranges') >= 0) {\n            if (base.remote_ipv4_ranges) {\n                this.remote_ipv4_ranges = base.remote_ipv4_ranges.map((original) => newIpsecConnectionIpv4BlockImpl(original));\n            } else {\n                this.remote_ipv4_ranges = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'use_cert_hash') >= 0) {\n            this.use_cert_hash = base.use_cert_hash;\n        }\n        if (Object.keys(base).findIndex(key => key === 'local_certificate_uribase') >= 0) {\n            this.local_certificate_uribase = base.local_certificate_uribase;\n        }\n        if (Object.keys(base).findIndex(key => key === 'remote_certificate_uribase') >= 0) {\n            this.remote_certificate_uribase = base.remote_certificate_uribase;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.remote_ipv4_ranges !== undefined) {\n            for (const item of this.remote_ipv4_ranges) {\n                if (item !== undefined && (item as IpsecConnectionIpv4BlockImpl)._remove_builtin_extensions !== undefined) {\n                    (item as IpsecConnectionIpv4BlockImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace IpsecConnectionSpec {\n    export type IkeVersionEnum = 'ikev1' | 'ikev2';\n    export const IkeVersionEnum = {\n        ikev1: 'ikev1' as IkeVersionEnum,\n        ikev2: 'ikev2' as IkeVersionEnum\n    };\n    export type IkeAuthenticationTypeEnum = 'ike_preshared_key' | 'certificate';\n    export const IkeAuthenticationTypeEnum = {\n        ike_preshared_key: 'ike_preshared_key' as IkeAuthenticationTypeEnum,\n        certificate: 'certificate' as IkeAuthenticationTypeEnum\n    };\n}\n\n\nexport function newIpsecConnectionSpecImpl(base: _IpsecConnectionSpec): IpsecConnectionSpecImpl {\n    return new IpsecConnectionSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _IpsecConnectorSpec, IpsecConnectorSpec, IpsecConnectorSpecImpl, newIpsecConnectorSpecImpl } from './ipsecConnectorSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _IpsecConnectorStatus, IpsecConnectorStatus, IpsecConnectorStatusImpl, newIpsecConnectorStatusImpl } from './ipsecConnectorStatus';\n\n\n/**\n * An  IpsecConnector represents a routing next hop for a collection of services. Typically a single IpsecConnector connects the Agilicus cloud to multiple services running in a single data centre. An IpsecConnector comprises one or more tunnels (IpSecConnections), which combined form a logical tunnel providing redundancy and load-balancing. Distinct data centres providing distinct sets of services should each have their own IpsecConnector. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _IpsecConnector { \n    metadata?: MetadataWithId;\n    spec?: IpsecConnectorSpec;\n    status?: IpsecConnectorStatus;\n}\n\nexport interface IpsecConnector extends _IpsecConnector {\n    _builtin_original?: _IpsecConnector;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class IpsecConnectorImpl  implements _IpsecConnector {\n    _builtin_original?: _IpsecConnector = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: IpsecConnectorSpec  | undefined ;\n    public status: IpsecConnectorStatus  | undefined ;\n    constructor(base: _IpsecConnector) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newIpsecConnectorImpl(base: _IpsecConnector): IpsecConnectorImpl {\n    return new IpsecConnectorImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ConnectorCloudRouting, ConnectorCloudRouting, ConnectorCloudRoutingImpl, newConnectorCloudRoutingImpl } from './connectorCloudRouting';\nimport { _IpsecConnection, IpsecConnection, IpsecConnectionImpl, newIpsecConnectionImpl } from './ipsecConnection';\n\n\n/**\n * An IPsec Connector Specification.  The configuration of a connector uses an inheritance model so that connections within a connector can re-use the common configuration of the connector.  Should a specific connection require overriding specific attributes of the connection, each connection has its own config section that allows this override.  Each connection has a name that must be configured to instantiate a connection. A connection can be created by a PUT to the connector endpoint. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _IpsecConnectorSpec { \n    /**\n     * The name of the IPsec connector \n     */\n    name: string;\n    /**\n     * A human readable slug to identify a resource and that is rfc1035 label compliant. The length has been restricted to 20 characters such that this name can be concatenated with other names or slugs. A slug is readOnly as it is generated by the backend resource. \n     */\n    name_slug?: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * The GUID of the IpsecGateway where this connector is instantiated from.\n     */\n    ipsec_gateway_id?: string;\n    /**\n     * Defines the set of IPsec connections within the connector. Adding an IpsecConnection(s) here will instantiate the connection(s). Removing an IpsecConnection(s) here cause the connection(s) to be torn down. \n     */\n    connections?: Array<IpsecConnection>;\n    connector_cloud_routing?: ConnectorCloudRouting;\n}\n\nexport interface IpsecConnectorSpec extends _IpsecConnectorSpec {\n    _builtin_original?: _IpsecConnectorSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class IpsecConnectorSpecImpl  implements _IpsecConnectorSpec {\n    _builtin_original?: _IpsecConnectorSpec = undefined;\n    public name: string ;\n    public name_slug: string  | undefined ;\n    public org_id: string ;\n    public ipsec_gateway_id: string  | undefined ;\n    public connections: Array<IpsecConnection>  | undefined ;\n    public connector_cloud_routing: ConnectorCloudRouting  | undefined ;\n    constructor(base: _IpsecConnectorSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name_slug') >= 0) {\n            this.name_slug = base.name_slug;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ipsec_gateway_id') >= 0) {\n            this.ipsec_gateway_id = base.ipsec_gateway_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connections') >= 0) {\n            if (base.connections) {\n                this.connections = base.connections.map((original) => newIpsecConnectionImpl(original));\n            } else {\n                this.connections = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_cloud_routing') >= 0) {\n            this.connector_cloud_routing = base.connector_cloud_routing;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.connections !== undefined) {\n            for (const item of this.connections) {\n                if (item !== undefined && (item as IpsecConnectionImpl)._remove_builtin_extensions !== undefined) {\n                    (item as IpsecConnectionImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newIpsecConnectorSpecImpl(base: _IpsecConnectorSpec): IpsecConnectorSpecImpl {\n    return new IpsecConnectorSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ApplicationService, ApplicationService, ApplicationServiceImpl, newApplicationServiceImpl } from './applicationService';\n\n\n/**\n * Status information pertaining to a Connector. Note that stats will only be returned if explicitly requested. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _IpsecConnectorStatus { \n    /**\n     * The list of application services associated with this connector\n     */\n    application_services?: Array<ApplicationService>;\n}\n\nexport interface IpsecConnectorStatus extends _IpsecConnectorStatus {\n    _builtin_original?: _IpsecConnectorStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class IpsecConnectorStatusImpl  implements _IpsecConnectorStatus {\n    _builtin_original?: _IpsecConnectorStatus = undefined;\n    public application_services: Array<ApplicationService>  | undefined ;\n    constructor(base: _IpsecConnectorStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'application_services') >= 0) {\n            if (base.application_services) {\n                this.application_services = base.application_services.map((original) => newApplicationServiceImpl(original));\n            } else {\n                this.application_services = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.application_services !== undefined) {\n            for (const item of this.application_services) {\n                if (item !== undefined && (item as ApplicationServiceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationServiceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newIpsecConnectorStatusImpl(base: _IpsecConnectorStatus): IpsecConnectorStatusImpl {\n    return new IpsecConnectorStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An IPsec Gateway Interface \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _IpsecGatewayInterface { \n    /**\n     * Name of the gateway interface. This name must be a legal RFC1123 label, and corresponds to the subdomain of the gateway interface. \n     */\n    name?: string;\n    /**\n     * The hostname of the gateway interface. This is readOnly, and is generated from the name plus the gateway domain name. \n     */\n    readonly hostname?: string;\n    /**\n     * Certificate distinguished name (DN) subject of the gateway interface\n     */\n    certificate_dn?: string;\n}\n\nexport interface IpsecGatewayInterface extends _IpsecGatewayInterface {\n    _builtin_original?: _IpsecGatewayInterface;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class IpsecGatewayInterfaceImpl  implements _IpsecGatewayInterface {\n    _builtin_original?: _IpsecGatewayInterface = undefined;\n    public name: string  | undefined ;\n    public readonly hostname: string  | undefined ;\n    public certificate_dn: string  | undefined ;\n    constructor(base: _IpsecGatewayInterface) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'hostname') >= 0) {\n            this.hostname = base.hostname;\n        }\n        if (Object.keys(base).findIndex(key => key === 'certificate_dn') >= 0) {\n            this.certificate_dn = base.certificate_dn;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newIpsecGatewayInterfaceImpl(base: _IpsecGatewayInterface): IpsecGatewayInterfaceImpl {\n    return new IpsecGatewayInterfaceImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AdminStatus, AdminStatus, AdminStatusImpl, newAdminStatusImpl } from './adminStatus';\nimport { _KerberosUpstreamStatus, KerberosUpstreamStatus, KerberosUpstreamStatusImpl, newKerberosUpstreamStatusImpl } from './kerberosUpstreamStatus';\nimport { _AutoCreateStatus, AutoCreateStatus, AutoCreateStatusImpl, newAutoCreateStatusImpl } from './autoCreateStatus';\nimport { _OperationalStatus, OperationalStatus, OperationalStatusImpl, newOperationalStatusImpl } from './operationalStatus';\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _KerberosUpstreamIdentityProvider { \n    /**\n     * A name used to uniquely refer to the upstream identity provider configuration. This is the text that will be displayed when presenting the upstream identity for login.\n     */\n    name?: string;\n    /**\n     * The upstream issuer uri. This is the URI which identifies the issuer against which users selecting this upstream will authenticate.\n     */\n    issuer?: string;\n    /**\n     * The type of upstream. For instance an OpenID Connector Upstream.\n     */\n    upstream_type?: KerberosUpstreamIdentityProvider.UpstreamTypeEnum;\n    /**\n     * The icon file to be used, limited to: numbers, letters, underscores, hyphens and periods. It is part of a css class (with the periods replaced by underscores).  To use a custom icon than the provided default you will need to add the icon the static/img folder and update the static css file to add a new css button like below ```json .dex-btn-icon--<your-logo_svg> {   background-image: url(../static/img/<your-logo.svg>); } ```  To use a default icon simply enter an icon name from the pre-provided defaults found in the static/img folder The default icons are   - bitbucket   - coreos   - email   - github   - gitlab   - google   - ldap   - linkedin   - microsoft   - oidc   - saml \n     */\n    icon?: string;\n    auto_create_status?: AutoCreateStatus;\n    admin_status?: AdminStatus;\n    /**\n     * Inidicates whether traps (notifications) should be disabled for this entity. A true state indicates notifications will not be sent on transition. \n     */\n    trap_disabled?: boolean;\n    operational_status?: OperationalStatus;\n    /**\n     * A base64 encoded keytab\n     */\n    keytab: string;\n    status?: KerberosUpstreamStatus;\n}\n\nexport interface KerberosUpstreamIdentityProvider extends _KerberosUpstreamIdentityProvider {\n    _builtin_original?: _KerberosUpstreamIdentityProvider;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class KerberosUpstreamIdentityProviderImpl  implements _KerberosUpstreamIdentityProvider {\n    _builtin_original?: _KerberosUpstreamIdentityProvider = undefined;\n    public name: string  | undefined ;\n    public issuer: string  | undefined ;\n    public upstream_type: KerberosUpstreamIdentityProvider.UpstreamTypeEnum  | undefined ;\n    public icon: string  | undefined ;\n    public auto_create_status: AutoCreateStatus  | undefined ;\n    public admin_status: AdminStatus  | undefined ;\n    public trap_disabled: boolean  | undefined ;\n    public operational_status: OperationalStatus  | undefined ;\n    public keytab: string ;\n    public status: KerberosUpstreamStatus  | undefined ;\n    constructor(base: _KerberosUpstreamIdentityProvider) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer') >= 0) {\n            this.issuer = base.issuer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_type') >= 0) {\n            this.upstream_type = base.upstream_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'icon') >= 0) {\n            this.icon = base.icon;\n        }\n        if (Object.keys(base).findIndex(key => key === 'auto_create_status') >= 0) {\n            this.auto_create_status = base.auto_create_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'admin_status') >= 0) {\n            this.admin_status = base.admin_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'trap_disabled') >= 0) {\n            this.trap_disabled = base.trap_disabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'operational_status') >= 0) {\n            this.operational_status = base.operational_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'keytab') >= 0) {\n            this.keytab = base.keytab;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace KerberosUpstreamIdentityProvider {\n    export type UpstreamTypeEnum = 'oidc' | 'local_auth' | 'application' | 'kerberos';\n    export const UpstreamTypeEnum = {\n        oidc: 'oidc' as UpstreamTypeEnum,\n        local_auth: 'local_auth' as UpstreamTypeEnum,\n        application: 'application' as UpstreamTypeEnum,\n        kerberos: 'kerberos' as UpstreamTypeEnum\n    };\n}\n\n\nexport function newKerberosUpstreamIdentityProviderImpl(base: _KerberosUpstreamIdentityProvider): KerberosUpstreamIdentityProviderImpl {\n    return new KerberosUpstreamIdentityProviderImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AdminStatus, AdminStatus, AdminStatusImpl, newAdminStatusImpl } from './adminStatus';\nimport { _AutoCreateStatus, AutoCreateStatus, AutoCreateStatusImpl, newAutoCreateStatusImpl } from './autoCreateStatus';\nimport { _OperationalStatus, OperationalStatus, OperationalStatusImpl, newOperationalStatusImpl } from './operationalStatus';\n\n\n/**\n * Custom OIDC Upstream Identity Provider\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCUpstreamIdentityProvider { \n    /**\n     * A name used to uniquely refer to the upstream identity provider configuration. This is the text that will be displayed when presenting the upstream identity for login.\n     */\n    name: string;\n    /**\n     * The icon file to be used, limited to: numbers, letters, underscores, hyphens and periods. It is part of a css class (with the periods replaced by underscores).  To use a custom icon than the provided default you will need to add the icon the static/img folder and update the static css file to add a new css button like below ```json .dex-btn-icon--<your-logo_svg> {   background-image: url(../static/img/<your-logo.svg>); } ```  To use a default icon simply enter an icon name from the pre-provided defaults found in the static/img folder The default icons are   - bitbucket   - coreos   - email   - github   - gitlab   - google   - ldap   - linkedin   - microsoft   - oidc   - saml \n     */\n    icon?: string;\n    /**\n     * The upstream issuer uri. This is the URI which identifies the issuer against which users selecting this OIDCUpstreamIdentityProvider will authenticate. The issuer must support the OpenID Connect discovery document described here: https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfig.\n     */\n    issuer: string;\n    /**\n     * The client ID for the upstream identity provider\n     */\n    client_id: string;\n    /**\n     * The secret presented to the upstream during any workflows which require authentication\n     */\n    client_secret?: string;\n    /**\n     * A proxy standing in for the main issuer host. Use this if fronting the upstream through the Agilicus infrastructure\n     */\n    issuer_external_host?: string;\n    /**\n     * Allows changing the key in the OIDC response claims used to determine the full name of the user. If not present, defaults to the standard name\n     */\n    username_key?: string;\n    /**\n     * Allows changing the key in the OIDC response claims used to determine the email address of the user. If not present, defaults to the standard email\n     */\n    email_key?: string;\n    /**\n     * Controls whether email verification is required for this OIDC provider. Some OIDC providers do not take steps to verify the email address of users, or may not do so in all cases. Setting this value to true will reject any successful upstream logins for users which have not had their email address verified.\n     */\n    email_verification_required?: boolean;\n    /**\n     * Controls whether the system will retrieve extra information about the user from the provider\\'s user_info endpoint. This can be useful if the initial OIDC response does not contain sufficient information to determine the email address or user\\'s name. Setting this value to true will cause extra requests to be generated to the upstream every time a user logs in to it.\n     */\n    request_user_info?: boolean;\n    /**\n     * Changes the key used to determine the id of the user in this upstream. The key will be used to retrieve the user id from the id token claims returned from the upstream when the user logs in. This user id is in turn used to link the user to its identity within the system. If not present, the system will fall back on the default, which is `sub`. \n     */\n    user_id_key?: string;\n    auto_create_status?: AutoCreateStatus;\n    /**\n     * Controls how the issuer sets the \\'prompt\\' field of the request to the upstream identity provider. It can take the following values: - `auto`: Determine whether to set the prompt field based on other criteria of the request, such as whether offline   mode is requested. - `disabled`: Never set the prompt field. \n     */\n    prompt_mode?: OIDCUpstreamIdentityProvider.PromptModeEnum;\n    /**\n     * Controls the type/flavor of the upstream OIDC provider. Some providers have specific functionality that differs from standard oidc. For example, Microsoft utilizes the Graph API for group management. For example, if the upstream issuer is microsoft, setting this flavor to microsoft will query the groups by name so that Agilicus will reconcile all groups by the name, rather than its guid. \n     */\n    oidc_flavor?: OIDCUpstreamIdentityProvider.OidcFlavorEnum;\n    /**\n     * supports values:   \\'\\' or null/not set: client_secret authorization is used   \\'federated-credential\\': Supports Microsoft federated credential.     In side the Microsoft Application Registration,     in \\\"Certificates & Secrets\\\" section, choose \\'Federated credentials\\'. Choose \\\"Other Issuer\\\", and specify     the URL of the issuer (ie. https://auth.<org domain>). Choose Explicit subject identifier, and enter     the client ID of the Microsoft Application. \n     */\n    client_authorization_type?: string | null;\n    admin_status?: AdminStatus;\n    /**\n     * Inidicates whether traps (notifications) should be disabled for this entity. A true state indicates notifications will not be sent on transition. \n     */\n    trap_disabled?: boolean;\n    operational_status?: OperationalStatus;\n}\n\nexport interface OIDCUpstreamIdentityProvider extends _OIDCUpstreamIdentityProvider {\n    _builtin_original?: _OIDCUpstreamIdentityProvider;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCUpstreamIdentityProviderImpl  implements _OIDCUpstreamIdentityProvider {\n    _builtin_original?: _OIDCUpstreamIdentityProvider = undefined;\n    public name: string ;\n    public icon: string  | undefined ;\n    public issuer: string ;\n    public client_id: string ;\n    public client_secret: string  | undefined ;\n    public issuer_external_host: string  | undefined ;\n    public username_key: string  | undefined ;\n    public email_key: string  | undefined ;\n    public email_verification_required: boolean  | undefined ;\n    public request_user_info: boolean  | undefined ;\n    public user_id_key: string  | undefined ;\n    public auto_create_status: AutoCreateStatus  | undefined ;\n    public prompt_mode: OIDCUpstreamIdentityProvider.PromptModeEnum  | undefined ;\n    public oidc_flavor: OIDCUpstreamIdentityProvider.OidcFlavorEnum  | undefined ;\n    public client_authorization_type: string | null  | undefined ;\n    public admin_status: AdminStatus  | undefined ;\n    public trap_disabled: boolean  | undefined ;\n    public operational_status: OperationalStatus  | undefined ;\n    constructor(base: _OIDCUpstreamIdentityProvider) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'icon') >= 0) {\n            this.icon = base.icon;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer') >= 0) {\n            this.issuer = base.issuer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'client_id') >= 0) {\n            this.client_id = base.client_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'client_secret') >= 0) {\n            this.client_secret = base.client_secret;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer_external_host') >= 0) {\n            this.issuer_external_host = base.issuer_external_host;\n        }\n        if (Object.keys(base).findIndex(key => key === 'username_key') >= 0) {\n            this.username_key = base.username_key;\n        }\n        if (Object.keys(base).findIndex(key => key === 'email_key') >= 0) {\n            this.email_key = base.email_key;\n        }\n        if (Object.keys(base).findIndex(key => key === 'email_verification_required') >= 0) {\n            this.email_verification_required = base.email_verification_required;\n        }\n        if (Object.keys(base).findIndex(key => key === 'request_user_info') >= 0) {\n            this.request_user_info = base.request_user_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_id_key') >= 0) {\n            this.user_id_key = base.user_id_key;\n        }\n        if (Object.keys(base).findIndex(key => key === 'auto_create_status') >= 0) {\n            this.auto_create_status = base.auto_create_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'prompt_mode') >= 0) {\n            this.prompt_mode = base.prompt_mode;\n        }\n        if (Object.keys(base).findIndex(key => key === 'oidc_flavor') >= 0) {\n            this.oidc_flavor = base.oidc_flavor;\n        }\n        if (Object.keys(base).findIndex(key => key === 'client_authorization_type') >= 0) {\n            this.client_authorization_type = base.client_authorization_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'admin_status') >= 0) {\n            this.admin_status = base.admin_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'trap_disabled') >= 0) {\n            this.trap_disabled = base.trap_disabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'operational_status') >= 0) {\n            this.operational_status = base.operational_status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace OIDCUpstreamIdentityProvider {\n    export type PromptModeEnum = 'auto' | 'disabled';\n    export const PromptModeEnum = {\n        auto: 'auto' as PromptModeEnum,\n        disabled: 'disabled' as PromptModeEnum\n    };\n    export type OidcFlavorEnum = 'oidc' | 'microsoft';\n    export const OidcFlavorEnum = {\n        oidc: 'oidc' as OidcFlavorEnum,\n        microsoft: 'microsoft' as OidcFlavorEnum\n    };\n}\n\n\nexport function newOIDCUpstreamIdentityProviderImpl(base: _OIDCUpstreamIdentityProvider): OIDCUpstreamIdentityProviderImpl {\n    return new OIDCUpstreamIdentityProviderImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AdminStatus, AdminStatus, AdminStatusImpl, newAdminStatusImpl } from './adminStatus';\nimport { _AutoCreateStatus, AutoCreateStatus, AutoCreateStatusImpl, newAutoCreateStatusImpl } from './autoCreateStatus';\nimport { _OperationalStatus, OperationalStatus, OperationalStatusImpl, newOperationalStatusImpl } from './operationalStatus';\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _LocalAuthUpstreamIdentityProvider { \n    /**\n     * A name used to uniquely refer to the upstream identity provider configuration. This is the text that will be displayed when presenting the upstream identity for login.\n     */\n    name?: string;\n    /**\n     * The upstream issuer uri. This is the URI which identifies the issuer against which users selecting this upstream will authenticate.\n     */\n    issuer?: string;\n    /**\n     * The type of upstream. For instance an OpenID Connector Upstream.\n     */\n    upstream_type?: LocalAuthUpstreamIdentityProvider.UpstreamTypeEnum;\n    /**\n     * The icon file to be used, limited to: numbers, letters, underscores, hyphens and periods. It is part of a css class (with the periods replaced by underscores).  To use a custom icon than the provided default you will need to add the icon the static/img folder and update the static css file to add a new css button like below ```json .dex-btn-icon--<your-logo_svg> {   background-image: url(../static/img/<your-logo.svg>); } ```  To use a default icon simply enter an icon name from the pre-provided defaults found in the static/img folder The default icons are   - bitbucket   - coreos   - email   - github   - gitlab   - google   - ldap   - linkedin   - microsoft   - oidc   - saml \n     */\n    icon?: string;\n    auto_create_status?: AutoCreateStatus;\n    admin_status?: AdminStatus;\n    /**\n     * Inidicates whether traps (notifications) should be disabled for this entity. A true state indicates notifications will not be sent on transition. \n     */\n    trap_disabled?: boolean;\n    operational_status?: OperationalStatus;\n    /**\n     * Uniquely identifies the upstream resource providing the local authentication for instance an Agilicus Agent Connector ID.\n     */\n    upstream_id: string;\n    /**\n     * If The domain this local upstream provides is incorrect, use this to overide it to some known correct value\n     */\n    upstream_domain_name?: string;\n}\n\nexport interface LocalAuthUpstreamIdentityProvider extends _LocalAuthUpstreamIdentityProvider {\n    _builtin_original?: _LocalAuthUpstreamIdentityProvider;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LocalAuthUpstreamIdentityProviderImpl  implements _LocalAuthUpstreamIdentityProvider {\n    _builtin_original?: _LocalAuthUpstreamIdentityProvider = undefined;\n    public name: string  | undefined ;\n    public issuer: string  | undefined ;\n    public upstream_type: LocalAuthUpstreamIdentityProvider.UpstreamTypeEnum  | undefined ;\n    public icon: string  | undefined ;\n    public auto_create_status: AutoCreateStatus  | undefined ;\n    public admin_status: AdminStatus  | undefined ;\n    public trap_disabled: boolean  | undefined ;\n    public operational_status: OperationalStatus  | undefined ;\n    public upstream_id: string ;\n    public upstream_domain_name: string  | undefined ;\n    constructor(base: _LocalAuthUpstreamIdentityProvider) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer') >= 0) {\n            this.issuer = base.issuer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_type') >= 0) {\n            this.upstream_type = base.upstream_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'icon') >= 0) {\n            this.icon = base.icon;\n        }\n        if (Object.keys(base).findIndex(key => key === 'auto_create_status') >= 0) {\n            this.auto_create_status = base.auto_create_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'admin_status') >= 0) {\n            this.admin_status = base.admin_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'trap_disabled') >= 0) {\n            this.trap_disabled = base.trap_disabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'operational_status') >= 0) {\n            this.operational_status = base.operational_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_id') >= 0) {\n            this.upstream_id = base.upstream_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_domain_name') >= 0) {\n            this.upstream_domain_name = base.upstream_domain_name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace LocalAuthUpstreamIdentityProvider {\n    export type UpstreamTypeEnum = 'oidc' | 'local_auth' | 'application' | 'kerberos';\n    export const UpstreamTypeEnum = {\n        oidc: 'oidc' as UpstreamTypeEnum,\n        local_auth: 'local_auth' as UpstreamTypeEnum,\n        application: 'application' as UpstreamTypeEnum,\n        kerberos: 'kerberos' as UpstreamTypeEnum\n    };\n}\n\n\nexport function newLocalAuthUpstreamIdentityProviderImpl(base: _LocalAuthUpstreamIdentityProvider): LocalAuthUpstreamIdentityProviderImpl {\n    return new LocalAuthUpstreamIdentityProviderImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AuthenticationAttribute, AuthenticationAttribute, AuthenticationAttributeImpl, newAuthenticationAttributeImpl } from './authenticationAttribute';\n\n\n/**\n * Object describing the properties of an IssuerClient\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _IssuerClient { \n    /**\n     * Unique identifier\n     */\n    readonly id?: string;\n    /**\n     * Unique identifier\n     */\n    readonly issuer_id?: string;\n    /**\n     * issuer client id\n     */\n    name: string;\n    /**\n     * issuer client secret\n     */\n    secret?: string;\n    /**\n     * application associated with client\n     */\n    application?: string;\n    /**\n     * org_id associated with client\n     */\n    org_id?: string;\n    /**\n     * List of organisation IDs which are allowed to authenticate using this client. If a user is not a member of one of these organisations, their authentication attempt will be denied. Note that this list intersects with `organisation_scope`. For example, if `organisation_scope` is `here-and-down` and this list contains two organisations below the current organisation, only those two will be allowed, despite there potentially being more sub organisations. If the list is empty, no restrictions are applied by this field. Note that other restrictions may be applied, such as by `organisation_scope`. \n     */\n    restricted_organisations?: Array<string>;\n    /**\n     * The Service Provider\\'s metadata file required for the SAML protocol. \n     */\n    saml_metadata_file?: string;\n    /**\n     * The properties from the agilicus id token to map to the user id. This can be changed if your application relies on an upstream user_id to map the user, for example SID or email. You can see what is available by logging into the admin portal and finding the token in local storage. When changing this ensure that you are requesting an appropriate saml_scope. For example in order to use federated_claims you need the federated:id scope. \n     */\n    id_mapping?: Array<string>;\n    /**\n     * The set of scopes to request for the agilicus oidc token when mapping to saml. \n     */\n    saml_scopes?: Array<string>;\n    /**\n     * How to limit which organisations are allowed to authenticate using this client. Note that this interacts with `restricted_organisations`: that list, if not empty, further limits the allowed organisations. * `any` indicates that there are no restrictions. All organisations served by   the issuer will be allowed to log in using this client. * `here-only` indicates that   only the organisation referenced by `org_id` may be used. * `here-and-down` indicates that the organisation referenced by `org_id`   and its children may be used. \n     */\n    organisation_scope?: IssuerClient.OrganisationScopeEnum;\n    /**\n     * List of redirect uris\n     */\n    redirects?: Array<string>;\n    /**\n     * When to present an mfa challenge to a user upon login. If the system determines that an MFA challenge is required, and the user does not yet have a authenticatin mechanism valid for this login session, the user will be presented with the option to enrol a new mechanism. * `always` means that the user will always be required to validate against a second factor. * `user_preference` means that the whether the user is required to validate depends on the user\\'s preferences.   A user could choose to always require MFA for their logins, or they could decide not to. Note that in this case,   other policy could override the preference to force the user to authenticate with MFA even if the user indicated   that they prefer not to. * `trust_upstream` means to always perform MFA, but that the upstream IDP will be trusted to have performed MFA if    the upstream indicates that it has done so. Otherwise, MFA will be performed by the system after the upstream    returns the to Issuer. \n     */\n    mfa_challenge?: IssuerClient.MfaChallengeEnum;\n    /**\n     * Whether a client is allowed to use single sign-on * `user_preference` means that the user will have the option to \\'remember\\' their upstream identity selection for single sign-on. * `never` means that the given client will not allow single sign-on. The user will be required to present credentials for each login to applications with this client id. \n     */\n    single_sign_on?: IssuerClient.SingleSignOnEnum;\n    /**\n     * A list of attributes to derive from information about the user. The user\\'s information returned to the relying party making a request using this client will be extended with these attributes. Only one attribute for a given `attribute_name` can exist per-client at a time. Add an attribute to this list when the default attributes do not provide sufficient information for the client application, or for when the client application expects the attributes to be named differently. \n     */\n    attributes?: Array<AuthenticationAttribute>;\n}\n\nexport interface IssuerClient extends _IssuerClient {\n    _builtin_original?: _IssuerClient;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class IssuerClientImpl  implements _IssuerClient {\n    _builtin_original?: _IssuerClient = undefined;\n    public readonly id: string  | undefined ;\n    public readonly issuer_id: string  | undefined ;\n    public name: string ;\n    public secret: string  | undefined ;\n    public application: string  | undefined ;\n    public org_id: string  | undefined ;\n    public restricted_organisations: Array<string>  | undefined ;\n    public saml_metadata_file: string  | undefined ;\n    public id_mapping: Array<string>  | undefined ;\n    public saml_scopes: Array<string>  | undefined ;\n    public organisation_scope: IssuerClient.OrganisationScopeEnum  | undefined ;\n    public redirects: Array<string>  | undefined ;\n    public mfa_challenge: IssuerClient.MfaChallengeEnum  | undefined ;\n    public single_sign_on: IssuerClient.SingleSignOnEnum  | undefined ;\n    public attributes: Array<AuthenticationAttribute>  | undefined ;\n    constructor(base: _IssuerClient) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer_id') >= 0) {\n            this.issuer_id = base.issuer_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'secret') >= 0) {\n            this.secret = base.secret;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application') >= 0) {\n            this.application = base.application;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'restricted_organisations') >= 0) {\n            this.restricted_organisations = base.restricted_organisations;\n        }\n        if (Object.keys(base).findIndex(key => key === 'saml_metadata_file') >= 0) {\n            this.saml_metadata_file = base.saml_metadata_file;\n        }\n        if (Object.keys(base).findIndex(key => key === 'id_mapping') >= 0) {\n            this.id_mapping = base.id_mapping;\n        }\n        if (Object.keys(base).findIndex(key => key === 'saml_scopes') >= 0) {\n            this.saml_scopes = base.saml_scopes;\n        }\n        if (Object.keys(base).findIndex(key => key === 'organisation_scope') >= 0) {\n            this.organisation_scope = base.organisation_scope;\n        }\n        if (Object.keys(base).findIndex(key => key === 'redirects') >= 0) {\n            this.redirects = base.redirects;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mfa_challenge') >= 0) {\n            this.mfa_challenge = base.mfa_challenge;\n        }\n        if (Object.keys(base).findIndex(key => key === 'single_sign_on') >= 0) {\n            this.single_sign_on = base.single_sign_on;\n        }\n        if (Object.keys(base).findIndex(key => key === 'attributes') >= 0) {\n            if (base.attributes) {\n                this.attributes = base.attributes.map((original) => newAuthenticationAttributeImpl(original));\n            } else {\n                this.attributes = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.attributes !== undefined) {\n            for (const item of this.attributes) {\n                if (item !== undefined && (item as AuthenticationAttributeImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AuthenticationAttributeImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace IssuerClient {\n    export type OrganisationScopeEnum = 'any' | 'here_and_down' | 'here_only';\n    export const OrganisationScopeEnum = {\n        any: 'any' as OrganisationScopeEnum,\n        here_and_down: 'here_and_down' as OrganisationScopeEnum,\n        here_only: 'here_only' as OrganisationScopeEnum\n    };\n    export type MfaChallengeEnum = 'always' | 'user_preference' | 'trust_upstream';\n    export const MfaChallengeEnum = {\n        always: 'always' as MfaChallengeEnum,\n        user_preference: 'user_preference' as MfaChallengeEnum,\n        trust_upstream: 'trust_upstream' as MfaChallengeEnum\n    };\n    export type SingleSignOnEnum = 'user_preference' | 'never';\n    export const SingleSignOnEnum = {\n        user_preference: 'user_preference' as SingleSignOnEnum,\n        never: 'never' as SingleSignOnEnum\n    };\n}\n\n\nexport function newIssuerClientImpl(base: _IssuerClient): IssuerClientImpl {\n    return new IssuerClientImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UpstreamGroupMappingSpec, UpstreamGroupMappingSpec, UpstreamGroupMappingSpecImpl, newUpstreamGroupMappingSpecImpl } from './upstreamGroupMappingSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\n\n\n/**\n * An object describing the mapping between an issuer\\'s upstream groups and groups in the Agilicus system. The mapping is applied when the user completes a login prior to the access token being issued. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UpstreamGroupMapping { \n    metadata?: MetadataWithId;\n    spec: UpstreamGroupMappingSpec;\n}\n\nexport interface UpstreamGroupMapping extends _UpstreamGroupMapping {\n    _builtin_original?: _UpstreamGroupMapping;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UpstreamGroupMappingImpl  implements _UpstreamGroupMapping {\n    _builtin_original?: _UpstreamGroupMapping = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: UpstreamGroupMappingSpec ;\n    constructor(base: _UpstreamGroupMapping) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUpstreamGroupMappingImpl(base: _UpstreamGroupMapping): UpstreamGroupMappingImpl {\n    return new UpstreamGroupMappingImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Managed upstream identity provider\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ManagedUpstreamIdentityProvider { \n    /**\n     * Name of the managed upstream identity provider. Ex google\n     */\n    readonly name: string;\n    /**\n     * Describes whether the managed upstream identity provider is enabled\n     */\n    enabled: boolean;\n    /**\n     * Shows the user an account selector, negating silent single sign on, but allowing the user to pick which account they intend to sign in with, without requiring credential entry. The support of this feature is dependent on the upstream provider. \n     */\n    prompt_select_account?: boolean;\n}\n\nexport interface ManagedUpstreamIdentityProvider extends _ManagedUpstreamIdentityProvider {\n    _builtin_original?: _ManagedUpstreamIdentityProvider;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ManagedUpstreamIdentityProviderImpl  implements _ManagedUpstreamIdentityProvider {\n    _builtin_original?: _ManagedUpstreamIdentityProvider = undefined;\n    public readonly name: string ;\n    public enabled: boolean ;\n    public prompt_select_account: boolean  | undefined ;\n    constructor(base: _ManagedUpstreamIdentityProvider) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'prompt_select_account') >= 0) {\n            this.prompt_select_account = base.prompt_select_account;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newManagedUpstreamIdentityProviderImpl(base: _ManagedUpstreamIdentityProvider): ManagedUpstreamIdentityProviderImpl {\n    return new ManagedUpstreamIdentityProviderImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _KerberosUpstreamIdentityProvider, KerberosUpstreamIdentityProvider, KerberosUpstreamIdentityProviderImpl, newKerberosUpstreamIdentityProviderImpl } from './kerberosUpstreamIdentityProvider';\nimport { _AdminStatus, AdminStatus, AdminStatusImpl, newAdminStatusImpl } from './adminStatus';\nimport { _ApplicationUpstreamIdentityProvider, ApplicationUpstreamIdentityProvider, ApplicationUpstreamIdentityProviderImpl, newApplicationUpstreamIdentityProviderImpl } from './applicationUpstreamIdentityProvider';\nimport { _IssuerStatus, IssuerStatus, IssuerStatusImpl, newIssuerStatusImpl } from './issuerStatus';\nimport { _OIDCUpstreamIdentityProvider, OIDCUpstreamIdentityProvider, OIDCUpstreamIdentityProviderImpl, newOIDCUpstreamIdentityProviderImpl } from './oIDCUpstreamIdentityProvider';\nimport { _LocalAuthUpstreamIdentityProvider, LocalAuthUpstreamIdentityProvider, LocalAuthUpstreamIdentityProviderImpl, newLocalAuthUpstreamIdentityProviderImpl } from './localAuthUpstreamIdentityProvider';\nimport { _IssuerClient, IssuerClient, IssuerClientImpl, newIssuerClientImpl } from './issuerClient';\nimport { _OperationalStatus, OperationalStatus, OperationalStatusImpl, newOperationalStatusImpl } from './operationalStatus';\nimport { _UpstreamGroupMapping, UpstreamGroupMapping, UpstreamGroupMappingImpl, newUpstreamGroupMappingImpl } from './upstreamGroupMapping';\nimport { _ManagedUpstreamIdentityProvider, ManagedUpstreamIdentityProvider, ManagedUpstreamIdentityProviderImpl, newManagedUpstreamIdentityProviderImpl } from './managedUpstreamIdentityProvider';\n\n\n/**\n * Object describing the properties of an issuer. Issuers support an inheritence hierachy. By setting parent_issuer to the guid of another issuer, the issuer will inherit some properties of that issuer. Setting it to null or leaving it undefined. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Issuer { \n    /**\n     * Unique identifier\n     */\n    readonly id?: string;\n    /**\n     * connect id issuer\n     */\n    issuer: string;\n    /**\n     * Describes whether or not the issuer is enabled\n     */\n    enabled?: boolean;\n    /**\n     * ID of the organisation which owns the issuer\n     */\n    org_id?: string;\n    /**\n     * ID of the theme file. The theme file is a zip file containing the web assets to show the client on login.\n     */\n    theme_file_id?: string;\n    /**\n     * Upstream redirect URI is the URI to which OpenID Connect upstreams will redirect after authentication. This is provisioned by Agilicus, but must be allowed by the upstream.\n     */\n    upstream_redirect_uri?: string;\n    /**\n     * The set of managed upstream identity providers for this issuer. A managed upstream has its configuration managed by default, and can be enabled or disabled for this issuer via this api.\n     */\n    managed_upstreams?: Array<ManagedUpstreamIdentityProvider>;\n    /**\n     * The set of OpenID Connect upstream identity providers configured for this issuer. An upstream is managed by the client, and can be configured for this issuer via this api.\n     */\n    oidc_upstreams?: Array<OIDCUpstreamIdentityProvider>;\n    /**\n     * The set of local authentication upstream identity providers configured for this issuer. A local authentication upstream can be an onsite Agilicus Agent.\n     */\n    local_auth_upstreams?: Array<LocalAuthUpstreamIdentityProvider>;\n    /**\n     * The set of application upstream identity providers configured for this issuer. Applications that can act as their own source of identity can be used as application upstreams. \n     */\n    application_upstreams?: Array<ApplicationUpstreamIdentityProvider>;\n    /**\n     * The set of kerberos upstream identity providers for this issuer. Device identity can be used to enable zero-interaction login for users on trusted devices which have already entered their credentials. \n     */\n    kerberos_upstreams?: Array<KerberosUpstreamIdentityProvider>;\n    /**\n     * List of clients\n     */\n    readonly clients?: Array<IssuerClient>;\n    /**\n     * List of upstream group mappings\n     */\n    readonly upstream_group_mappings?: Array<UpstreamGroupMapping>;\n    /**\n     * A human readable slug to identify a resource and that is rfc1035 label compliant. The length has been restricted to 20 characters such that this name can be concatenated with other names or slugs. A slug is readOnly as it is generated by the backend resource. \n     */\n    name_slug?: string;\n    /**\n     * The encryption key used to secure the saml state. This is used to encrypt the saml cookie that is used to identify the user. \n     */\n    saml_state_encryption_key?: string;\n    /**\n     * Service account GUID used for the issuer\n     */\n    readonly service_account_id?: string;\n    /**\n     * Service account user GUID used for the issuer\n     */\n    readonly service_account_user_id?: string;\n    /**\n     * The list of verified domains for the issuer. This is used to authorize users with multiple upstream identities but who are represented as a single user in the Agilicus System. For example agilicus.com would allow users whose email ended in @agilicus.com to login from multiple upstream identity providers. \n     */\n    readonly verified_domains?: Array<string>;\n    admin_status?: AdminStatus;\n    /**\n     * Inidicates whether traps (notifications) should be disabled for this entity. A true state indicates notifications will not be sent on transition. \n     */\n    trap_disabled?: boolean;\n    operational_status?: OperationalStatus;\n    /**\n     * A unique identifier which can be empty. The meaning of it being empty depends on the context in which it is used, but usually it implies that something is not set. \n     */\n    parent_issuer?: string | null;\n    status?: IssuerStatus;\n}\n\nexport interface Issuer extends _Issuer {\n    _builtin_original?: _Issuer;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class IssuerImpl  implements _Issuer {\n    _builtin_original?: _Issuer = undefined;\n    public readonly id: string  | undefined ;\n    public issuer: string ;\n    public enabled: boolean  | undefined ;\n    public org_id: string  | undefined ;\n    public theme_file_id: string  | undefined ;\n    public upstream_redirect_uri: string  | undefined ;\n    public managed_upstreams: Array<ManagedUpstreamIdentityProvider>  | undefined ;\n    public oidc_upstreams: Array<OIDCUpstreamIdentityProvider>  | undefined ;\n    public local_auth_upstreams: Array<LocalAuthUpstreamIdentityProvider>  | undefined ;\n    public application_upstreams: Array<ApplicationUpstreamIdentityProvider>  | undefined ;\n    public kerberos_upstreams: Array<KerberosUpstreamIdentityProvider>  | undefined ;\n    public readonly clients: Array<IssuerClient>  | undefined ;\n    public readonly upstream_group_mappings: Array<UpstreamGroupMapping>  | undefined ;\n    public name_slug: string  | undefined ;\n    public saml_state_encryption_key: string  | undefined ;\n    public readonly service_account_id: string  | undefined ;\n    public readonly service_account_user_id: string  | undefined ;\n    public readonly verified_domains: Array<string>  | undefined ;\n    public admin_status: AdminStatus  | undefined ;\n    public trap_disabled: boolean  | undefined ;\n    public operational_status: OperationalStatus  | undefined ;\n    public parent_issuer: string | null  | undefined ;\n    public status: IssuerStatus  | undefined ;\n    constructor(base: _Issuer) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer') >= 0) {\n            this.issuer = base.issuer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'theme_file_id') >= 0) {\n            this.theme_file_id = base.theme_file_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_redirect_uri') >= 0) {\n            this.upstream_redirect_uri = base.upstream_redirect_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'managed_upstreams') >= 0) {\n            if (base.managed_upstreams) {\n                this.managed_upstreams = base.managed_upstreams.map((original) => newManagedUpstreamIdentityProviderImpl(original));\n            } else {\n                this.managed_upstreams = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'oidc_upstreams') >= 0) {\n            if (base.oidc_upstreams) {\n                this.oidc_upstreams = base.oidc_upstreams.map((original) => newOIDCUpstreamIdentityProviderImpl(original));\n            } else {\n                this.oidc_upstreams = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'local_auth_upstreams') >= 0) {\n            if (base.local_auth_upstreams) {\n                this.local_auth_upstreams = base.local_auth_upstreams.map((original) => newLocalAuthUpstreamIdentityProviderImpl(original));\n            } else {\n                this.local_auth_upstreams = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_upstreams') >= 0) {\n            if (base.application_upstreams) {\n                this.application_upstreams = base.application_upstreams.map((original) => newApplicationUpstreamIdentityProviderImpl(original));\n            } else {\n                this.application_upstreams = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'kerberos_upstreams') >= 0) {\n            if (base.kerberos_upstreams) {\n                this.kerberos_upstreams = base.kerberos_upstreams.map((original) => newKerberosUpstreamIdentityProviderImpl(original));\n            } else {\n                this.kerberos_upstreams = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'clients') >= 0) {\n            if (base.clients) {\n                this.clients = base.clients.map((original) => newIssuerClientImpl(original));\n            } else {\n                this.clients = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_group_mappings') >= 0) {\n            if (base.upstream_group_mappings) {\n                this.upstream_group_mappings = base.upstream_group_mappings.map((original) => newUpstreamGroupMappingImpl(original));\n            } else {\n                this.upstream_group_mappings = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'name_slug') >= 0) {\n            this.name_slug = base.name_slug;\n        }\n        if (Object.keys(base).findIndex(key => key === 'saml_state_encryption_key') >= 0) {\n            this.saml_state_encryption_key = base.saml_state_encryption_key;\n        }\n        if (Object.keys(base).findIndex(key => key === 'service_account_id') >= 0) {\n            this.service_account_id = base.service_account_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'service_account_user_id') >= 0) {\n            this.service_account_user_id = base.service_account_user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'verified_domains') >= 0) {\n            this.verified_domains = base.verified_domains;\n        }\n        if (Object.keys(base).findIndex(key => key === 'admin_status') >= 0) {\n            this.admin_status = base.admin_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'trap_disabled') >= 0) {\n            this.trap_disabled = base.trap_disabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'operational_status') >= 0) {\n            this.operational_status = base.operational_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'parent_issuer') >= 0) {\n            this.parent_issuer = base.parent_issuer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.managed_upstreams !== undefined) {\n            for (const item of this.managed_upstreams) {\n                if (item !== undefined && (item as ManagedUpstreamIdentityProviderImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ManagedUpstreamIdentityProviderImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.oidc_upstreams !== undefined) {\n            for (const item of this.oidc_upstreams) {\n                if (item !== undefined && (item as OIDCUpstreamIdentityProviderImpl)._remove_builtin_extensions !== undefined) {\n                    (item as OIDCUpstreamIdentityProviderImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.local_auth_upstreams !== undefined) {\n            for (const item of this.local_auth_upstreams) {\n                if (item !== undefined && (item as LocalAuthUpstreamIdentityProviderImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LocalAuthUpstreamIdentityProviderImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.application_upstreams !== undefined) {\n            for (const item of this.application_upstreams) {\n                if (item !== undefined && (item as ApplicationUpstreamIdentityProviderImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationUpstreamIdentityProviderImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.kerberos_upstreams !== undefined) {\n            for (const item of this.kerberos_upstreams) {\n                if (item !== undefined && (item as KerberosUpstreamIdentityProviderImpl)._remove_builtin_extensions !== undefined) {\n                    (item as KerberosUpstreamIdentityProviderImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.clients !== undefined) {\n            for (const item of this.clients) {\n                if (item !== undefined && (item as IssuerClientImpl)._remove_builtin_extensions !== undefined) {\n                    (item as IssuerClientImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.upstream_group_mappings !== undefined) {\n            for (const item of this.upstream_group_mappings) {\n                if (item !== undefined && (item as UpstreamGroupMappingImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UpstreamGroupMappingImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newIssuerImpl(base: _Issuer): IssuerImpl {\n    return new IssuerImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A trusted issuer maps to another OIDC issuer provided by Agilicus. This differs from normally configured issuers in that the only necessary configuration is the issuer URL and purpose. The system will take care of handling authentication of the clients, which simplifies the configuration. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TrustedIssuer { \n    /**\n     * The issuer uri which identifies the whether to allow a user to log in, which identifies the OIDC endpoint at which to authenticate \n     */\n    issuer?: string;\n    /**\n     * The purpose of trusting this issuer, imposing additional restrictions on how users authenticate when accessing this upstream. \n     */\n    purpose?: string;\n}\n\nexport interface TrustedIssuer extends _TrustedIssuer {\n    _builtin_original?: _TrustedIssuer;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TrustedIssuerImpl  implements _TrustedIssuer {\n    _builtin_original?: _TrustedIssuer = undefined;\n    public issuer: string  | undefined ;\n    public purpose: string  | undefined ;\n    constructor(base: _TrustedIssuer) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'issuer') >= 0) {\n            this.issuer = base.issuer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'purpose') >= 0) {\n            this.purpose = base.purpose;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTrustedIssuerImpl(base: _TrustedIssuer): TrustedIssuerImpl {\n    return new TrustedIssuerImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _TrustedIssuer, TrustedIssuer, TrustedIssuerImpl, newTrustedIssuerImpl } from './trustedIssuer';\nimport { _OperationalStatus, OperationalStatus, OperationalStatusImpl, newOperationalStatusImpl } from './operationalStatus';\n\n\n/**\n * The read-only, inferred properties of the issuer. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _IssuerStatus { \n    /**\n     * ID of the theme file. The theme file is a zip file containing the web assets to show the client on login.\n     */\n    theme_file_id?: string;\n    operational_status?: OperationalStatus;\n    /**\n     * The list of trusted issuers for federated login. \n     */\n    trusted_issuers?: Array<TrustedIssuer>;\n}\n\nexport interface IssuerStatus extends _IssuerStatus {\n    _builtin_original?: _IssuerStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class IssuerStatusImpl  implements _IssuerStatus {\n    _builtin_original?: _IssuerStatus = undefined;\n    public theme_file_id: string  | undefined ;\n    public operational_status: OperationalStatus  | undefined ;\n    public trusted_issuers: Array<TrustedIssuer>  | undefined ;\n    constructor(base: _IssuerStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'theme_file_id') >= 0) {\n            this.theme_file_id = base.theme_file_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'operational_status') >= 0) {\n            this.operational_status = base.operational_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'trusted_issuers') >= 0) {\n            if (base.trusted_issuers) {\n                this.trusted_issuers = base.trusted_issuers.map((original) => newTrustedIssuerImpl(original));\n            } else {\n                this.trusted_issuers = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.trusted_issuers !== undefined) {\n            for (const item of this.trusted_issuers) {\n                if (item !== undefined && (item as TrustedIssuerImpl)._remove_builtin_extensions !== undefined) {\n                    (item as TrustedIssuerImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newIssuerStatusImpl(base: _IssuerStatus): IssuerStatusImpl {\n    return new IssuerStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AdminStatus, AdminStatus, AdminStatusImpl, newAdminStatusImpl } from './adminStatus';\nimport { _OperationalStatus, OperationalStatus, OperationalStatusImpl, newOperationalStatusImpl } from './operationalStatus';\n\n\n/**\n * A summary of the issuer upstreams\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _IssuerUpstream { \n    /**\n     * Unique identifier\n     */\n    readonly issuer_id: string;\n    /**\n     * ID of the organisation which owns the issuer\n     */\n    org_id: string;\n    /**\n     * A name used to uniquely refer to the upstream identity provider configuration. This is the text that will be displayed when presenting the upstream identity for login.\n     */\n    name: string;\n    /**\n     * The upstream issuer uri. This is the URI which identifies the issuer against which users selecting this upstream will authenticate.\n     */\n    upstream_issuer: string;\n    /**\n     * The type of upstream. For instance an OpenID Connector Upstream.\n     */\n    upstream_type?: string;\n    admin_status?: AdminStatus;\n    /**\n     * Inidicates whether traps (notifications) should be disabled for this entity. A true state indicates notifications will not be sent on transition. \n     */\n    trap_disabled?: boolean;\n    operational_status?: OperationalStatus;\n}\n\nexport interface IssuerUpstream extends _IssuerUpstream {\n    _builtin_original?: _IssuerUpstream;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class IssuerUpstreamImpl  implements _IssuerUpstream {\n    _builtin_original?: _IssuerUpstream = undefined;\n    public readonly issuer_id: string ;\n    public org_id: string ;\n    public name: string ;\n    public upstream_issuer: string ;\n    public upstream_type: string  | undefined ;\n    public admin_status: AdminStatus  | undefined ;\n    public trap_disabled: boolean  | undefined ;\n    public operational_status: OperationalStatus  | undefined ;\n    constructor(base: _IssuerUpstream) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'issuer_id') >= 0) {\n            this.issuer_id = base.issuer_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_issuer') >= 0) {\n            this.upstream_issuer = base.upstream_issuer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_type') >= 0) {\n            this.upstream_type = base.upstream_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'admin_status') >= 0) {\n            this.admin_status = base.admin_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'trap_disabled') >= 0) {\n            this.trap_disabled = base.trap_disabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'operational_status') >= 0) {\n            this.operational_status = base.operational_status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newIssuerUpstreamImpl(base: _IssuerUpstream): IssuerUpstreamImpl {\n    return new IssuerUpstreamImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Enable javascript injection and provide the location or script to load.  The code will be injected prior to the `</head>` in the main asset loading of the root page. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _JSInject { \n    /**\n     * The name of the script that will be loaded. \n     */\n    script_name?: string;\n    /**\n     * The SubResource Integrity (SRI) hash of the inject_script. \n     */\n    readonly sri_hash?: string;\n    /**\n     * The injected script to be called from the root page. Note this can be generated automatically using an inject_preset option, or using a manually set script. This property cannot be set (and will be ignored), if the inject_preset option is set. \n     */\n    inject_script?: string | null;\n    /**\n     * A predefined inject type.  possible values:    \\'set-cookie-for-service-routes\\':       A js script that will iterate over all service routes (see ApplicationServiceRoute) that       have property set_token_cookie set to True, and set their cookie according to the external_name       that is set for its service route. \n     */\n    inject_preset?: string | null;\n}\n\nexport interface JSInject extends _JSInject {\n    _builtin_original?: _JSInject;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class JSInjectImpl  implements _JSInject {\n    _builtin_original?: _JSInject = undefined;\n    public script_name: string  | undefined ;\n    public readonly sri_hash: string  | undefined ;\n    public inject_script: string | null  | undefined ;\n    public inject_preset: string | null  | undefined ;\n    constructor(base: _JSInject) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'script_name') >= 0) {\n            this.script_name = base.script_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'sri_hash') >= 0) {\n            this.sri_hash = base.sri_hash;\n        }\n        if (Object.keys(base).findIndex(key => key === 'inject_script') >= 0) {\n            this.inject_script = base.inject_script;\n        }\n        if (Object.keys(base).findIndex(key => key === 'inject_preset') >= 0) {\n            this.inject_preset = base.inject_preset;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newJSInjectImpl(base: _JSInject): JSInjectImpl {\n    return new JSInjectImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A unique name that refers to a specific constraint.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _JSONBodyConstraint { \n    /**\n     * The name that refers to a specific constraint.\n     */\n    name: string;\n    /**\n     * The value that\\'s matched against and should be exactly the same to satisfy the rule.\n     */\n    exact_match?: string;\n    /**\n     * The type of the value that\\'s matched against.\n     */\n    match_type?: JSONBodyConstraint.MatchTypeEnum;\n    /**\n     * The json pointer path that system follows to store or retrieve data. The pointers are defined in (https://tools.ietf.org/html/rfc6901). \n     */\n    pointer?: string;\n}\n\nexport interface JSONBodyConstraint extends _JSONBodyConstraint {\n    _builtin_original?: _JSONBodyConstraint;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class JSONBodyConstraintImpl  implements _JSONBodyConstraint {\n    _builtin_original?: _JSONBodyConstraint = undefined;\n    public name: string ;\n    public exact_match: string  | undefined ;\n    public match_type: JSONBodyConstraint.MatchTypeEnum  | undefined ;\n    public pointer: string  | undefined ;\n    constructor(base: _JSONBodyConstraint) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'exact_match') >= 0) {\n            this.exact_match = base.exact_match;\n        }\n        if (Object.keys(base).findIndex(key => key === 'match_type') >= 0) {\n            this.match_type = base.match_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'pointer') >= 0) {\n            this.pointer = base.pointer;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace JSONBodyConstraint {\n    export type MatchTypeEnum = 'string';\n    export const MatchTypeEnum = {\n        string: 'string' as MatchTypeEnum\n    };\n}\n\n\nexport function newJSONBodyConstraintImpl(base: _JSONBodyConstraint): JSONBodyConstraintImpl {\n    return new JSONBodyConstraintImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _KerberosUpstreamStatus, KerberosUpstreamStatus, KerberosUpstreamStatusImpl, newKerberosUpstreamStatusImpl } from './kerberosUpstreamStatus';\n\n\n/**\n * The specification for the keytab for a kerberos upstream\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _KerberosUpstreamConfig { \n    /**\n     * A base64 encoded keytab\n     */\n    keytab: string;\n    status?: KerberosUpstreamStatus;\n}\n\nexport interface KerberosUpstreamConfig extends _KerberosUpstreamConfig {\n    _builtin_original?: _KerberosUpstreamConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class KerberosUpstreamConfigImpl  implements _KerberosUpstreamConfig {\n    _builtin_original?: _KerberosUpstreamConfig = undefined;\n    public keytab: string ;\n    public status: KerberosUpstreamStatus  | undefined ;\n    constructor(base: _KerberosUpstreamConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'keytab') >= 0) {\n            this.keytab = base.keytab;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newKerberosUpstreamConfigImpl(base: _KerberosUpstreamConfig): KerberosUpstreamConfigImpl {\n    return new KerberosUpstreamConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _KerberosUpstreamStatusKeyTabEntries { \n    /**\n     * The principal for this keytab entry. Must be of the form \\\"auth.<your-domain>@YOURORG.COM\\\" \n     */\n    principal?: string;\n    /**\n     * Update time\n     */\n    timestamp?: Date;\n    /**\n     * Kerberos encryption type, see https://www.iana.org/assignments/kerberos-parameters/kerberos-parameters.xhtml \n     */\n    key_type?: string;\n    /**\n     * The generation of this keytab entry, encremented each time a key is generated \n     */\n    kvno?: number;\n}\n\nexport interface KerberosUpstreamStatusKeyTabEntries extends _KerberosUpstreamStatusKeyTabEntries {\n    _builtin_original?: _KerberosUpstreamStatusKeyTabEntries;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class KerberosUpstreamStatusKeyTabEntriesImpl  implements _KerberosUpstreamStatusKeyTabEntries {\n    _builtin_original?: _KerberosUpstreamStatusKeyTabEntries = undefined;\n    public principal: string  | undefined ;\n    public timestamp: Date  | undefined ;\n    public key_type: string  | undefined ;\n    public kvno: number  | undefined ;\n    constructor(base: _KerberosUpstreamStatusKeyTabEntries) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'principal') >= 0) {\n            this.principal = base.principal;\n        }\n        if (Object.keys(base).findIndex(key => key === 'timestamp') >= 0) {\n            this.timestamp = base.timestamp;\n        }\n        if (Object.keys(base).findIndex(key => key === 'key_type') >= 0) {\n            this.key_type = base.key_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'kvno') >= 0) {\n            this.kvno = base.kvno;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newKerberosUpstreamStatusKeyTabEntriesImpl(base: _KerberosUpstreamStatusKeyTabEntries): KerberosUpstreamStatusKeyTabEntriesImpl {\n    return new KerberosUpstreamStatusKeyTabEntriesImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _KerberosUpstreamStatusKeyTabEntries, KerberosUpstreamStatusKeyTabEntries, KerberosUpstreamStatusKeyTabEntriesImpl, newKerberosUpstreamStatusKeyTabEntriesImpl } from './kerberosUpstreamStatusKeyTabEntries';\n\n\n/**\n * The properties of the keytab from a kerberos upstream\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _KerberosUpstreamStatus { \n    /**\n     * The properties for the keys available from the keytab \n     */\n    key_tab_entries?: Array<KerberosUpstreamStatusKeyTabEntries>;\n}\n\nexport interface KerberosUpstreamStatus extends _KerberosUpstreamStatus {\n    _builtin_original?: _KerberosUpstreamStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class KerberosUpstreamStatusImpl  implements _KerberosUpstreamStatus {\n    _builtin_original?: _KerberosUpstreamStatus = undefined;\n    public key_tab_entries: Array<KerberosUpstreamStatusKeyTabEntries>  | undefined ;\n    constructor(base: _KerberosUpstreamStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'key_tab_entries') >= 0) {\n            if (base.key_tab_entries) {\n                this.key_tab_entries = base.key_tab_entries.map((original) => newKerberosUpstreamStatusKeyTabEntriesImpl(original));\n            } else {\n                this.key_tab_entries = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.key_tab_entries !== undefined) {\n            for (const item of this.key_tab_entries) {\n                if (item !== undefined && (item as KerberosUpstreamStatusKeyTabEntriesImpl)._remove_builtin_extensions !== undefined) {\n                    (item as KerberosUpstreamStatusKeyTabEntriesImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newKerberosUpstreamStatusImpl(base: _KerberosUpstreamStatus): KerberosUpstreamStatusImpl {\n    return new KerberosUpstreamStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Kernel info \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _KernelInfo { \n    /**\n     * The kernel release\n     */\n    release?: string;\n    /**\n     * The kernel version\n     */\n    version?: string;\n    /**\n     * The kernel architecture\n     */\n    architecture?: string;\n}\n\nexport interface KernelInfo extends _KernelInfo {\n    _builtin_original?: _KernelInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class KernelInfoImpl  implements _KernelInfo {\n    _builtin_original?: _KernelInfo = undefined;\n    public release: string  | undefined ;\n    public version: string  | undefined ;\n    public architecture: string  | undefined ;\n    constructor(base: _KernelInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'release') >= 0) {\n            this.release = base.release;\n        }\n        if (Object.keys(base).findIndex(key => key === 'version') >= 0) {\n            this.version = base.version;\n        }\n        if (Object.keys(base).findIndex(key => key === 'architecture') >= 0) {\n            this.architecture = base.architecture;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newKernelInfoImpl(base: _KernelInfo): KernelInfoImpl {\n    return new KernelInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _LabelSpec, LabelSpec, LabelSpecImpl, newLabelSpecImpl } from './labelSpec';\n\n\n/**\n * Labels annotate objects in the Agilicus API with information that can be used to include or exclude them from operations. Labels are case-sensitive.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Label { \n    metadata?: MetadataWithId;\n    spec: LabelSpec;\n}\n\nexport interface Label extends _Label {\n    _builtin_original?: _Label;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LabelImpl  implements _Label {\n    _builtin_original?: _Label = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: LabelSpec ;\n    constructor(base: _Label) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newLabelImpl(base: _Label): LabelImpl {\n    return new LabelImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LabelAssociationStatus, LabelAssociationStatus, LabelAssociationStatusImpl, newLabelAssociationStatusImpl } from './labelAssociationStatus';\n\n\n/**\n * An association between a label and an object.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LabelAssociation { \n    /**\n     * The name of a label. This is the value used to annotate an object.\n     */\n    label_name: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    status?: LabelAssociationStatus;\n}\n\nexport interface LabelAssociation extends _LabelAssociation {\n    _builtin_original?: _LabelAssociation;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LabelAssociationImpl  implements _LabelAssociation {\n    _builtin_original?: _LabelAssociation = undefined;\n    public label_name: string ;\n    public org_id: string ;\n    public status: LabelAssociationStatus  | undefined ;\n    constructor(base: _LabelAssociation) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'label_name') >= 0) {\n            this.label_name = base.label_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newLabelAssociationImpl(base: _LabelAssociation): LabelAssociationImpl {\n    return new LabelAssociationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LabelNavigation, LabelNavigation, LabelNavigationImpl, newLabelNavigationImpl } from './labelNavigation';\n\n\n/**\n * Read only properties of a label association \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LabelAssociationStatus { \n    navigation?: LabelNavigation;\n}\n\nexport interface LabelAssociationStatus extends _LabelAssociationStatus {\n    _builtin_original?: _LabelAssociationStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LabelAssociationStatusImpl  implements _LabelAssociationStatus {\n    _builtin_original?: _LabelAssociationStatus = undefined;\n    public navigation: LabelNavigation  | undefined ;\n    constructor(base: _LabelAssociationStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'navigation') >= 0) {\n            this.navigation = base.navigation;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newLabelAssociationStatusImpl(base: _LabelAssociationStatus): LabelAssociationStatusImpl {\n    return new LabelAssociationStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Controls how a label is used for navigational purposes (e.g. laying out resources in a hiearchy) \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LabelNavigation { \n    /**\n     * Whether or not this label is used for navigation. \n     */\n    enabled: boolean;\n}\n\nexport interface LabelNavigation extends _LabelNavigation {\n    _builtin_original?: _LabelNavigation;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LabelNavigationImpl  implements _LabelNavigation {\n    _builtin_original?: _LabelNavigation = undefined;\n    public enabled: boolean ;\n    constructor(base: _LabelNavigation) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newLabelNavigationImpl(base: _LabelNavigation): LabelNavigationImpl {\n    return new LabelNavigationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _DisplayInfo, DisplayInfo, DisplayInfoImpl, newDisplayInfoImpl } from './displayInfo';\nimport { _LabelNavigation, LabelNavigation, LabelNavigationImpl, newLabelNavigationImpl } from './labelNavigation';\n\n\n/**\n * The specification of a label \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LabelSpec { \n    /**\n     * The name of a label. This is the value used to annotate an object.\n     */\n    name: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * A description of a label, its purpose, etc. \n     */\n    description?: string;\n    navigation?: LabelNavigation;\n    display_info?: DisplayInfo;\n}\n\nexport interface LabelSpec extends _LabelSpec {\n    _builtin_original?: _LabelSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LabelSpecImpl  implements _LabelSpec {\n    _builtin_original?: _LabelSpec = undefined;\n    public name: string ;\n    public org_id: string ;\n    public description: string  | undefined ;\n    public navigation: LabelNavigation  | undefined ;\n    public display_info: DisplayInfo  | undefined ;\n    constructor(base: _LabelSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'navigation') >= 0) {\n            this.navigation = base.navigation;\n        }\n        if (Object.keys(base).findIndex(key => key === 'display_info') >= 0) {\n            this.display_info = base.display_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newLabelSpecImpl(base: _LabelSpec): LabelSpecImpl {\n    return new LabelSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LabelAssociation, LabelAssociation, LabelAssociationImpl, newLabelAssociationImpl } from './labelAssociation';\n\n\n/**\n * Establishes an association between Labels and an object in the Agilicus API. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LabelledObject { \n    /**\n     * Unique identifier\n     */\n    object_id: string;\n    /**\n     * The type of an object\n     */\n    object_type: string;\n    /**\n     * The labels associated with the object\n     */\n    labels: Array<LabelAssociation>;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n}\n\nexport interface LabelledObject extends _LabelledObject {\n    _builtin_original?: _LabelledObject;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LabelledObjectImpl  implements _LabelledObject {\n    _builtin_original?: _LabelledObject = undefined;\n    public object_id: string ;\n    public object_type: string ;\n    public labels: Array<LabelAssociation> ;\n    public org_id: string ;\n    constructor(base: _LabelledObject) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'object_id') >= 0) {\n            this.object_id = base.object_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'object_type') >= 0) {\n            this.object_type = base.object_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'labels') >= 0) {\n            if (base.labels) {\n                this.labels = base.labels.map((original) => newLabelAssociationImpl(original));\n            } else {\n                this.labels = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.labels !== undefined) {\n            for (const item of this.labels) {\n                if (item !== undefined && (item as LabelAssociationImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LabelAssociationImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newLabelledObjectImpl(base: _LabelledObject): LabelledObjectImpl {\n    return new LabelledObjectImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A latency bucket and its measurement. Part of a latency historgram \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LatencyHistogramBuckets { \n    /**\n     * Identifies the bucket. This bucket will count all instances where the latency was less than or equal to this value. \n     */\n    bucket: number;\n    /**\n     * The number of times the measured time of something fell in to this bucket. \n     */\n    value: number;\n}\n\nexport interface LatencyHistogramBuckets extends _LatencyHistogramBuckets {\n    _builtin_original?: _LatencyHistogramBuckets;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LatencyHistogramBucketsImpl  implements _LatencyHistogramBuckets {\n    _builtin_original?: _LatencyHistogramBuckets = undefined;\n    public bucket: number ;\n    public value: number ;\n    constructor(base: _LatencyHistogramBuckets) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'bucket') >= 0) {\n            this.bucket = base.bucket;\n        }\n        if (Object.keys(base).findIndex(key => key === 'value') >= 0) {\n            this.value = base.value;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newLatencyHistogramBucketsImpl(base: _LatencyHistogramBuckets): LatencyHistogramBucketsImpl {\n    return new LatencyHistogramBucketsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LatencyHistogramBuckets, LatencyHistogramBuckets, LatencyHistogramBucketsImpl, newLatencyHistogramBucketsImpl } from './latencyHistogramBuckets';\n\n\n/**\n * A latency histogram. Contains a list of buckets + a final tail bucket. Each bucket describe what part of the histogram it measures. The tail bucket captures all items which would otherwise fall outside the range of the buckets. A histogram with only a tail_bucket is essentially a counter. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LatencyHistogram { \n    /**\n     * The buckets composing the histogram\n     */\n    buckets: Array<LatencyHistogramBuckets>;\n    /**\n     * The total number of times something was measured by the histogram. This serves as the long tail of the histogram, but also as a total counter for the number of events measured. \n     */\n    tail_bucket: number;\n}\n\nexport interface LatencyHistogram extends _LatencyHistogram {\n    _builtin_original?: _LatencyHistogram;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LatencyHistogramImpl  implements _LatencyHistogram {\n    _builtin_original?: _LatencyHistogram = undefined;\n    public buckets: Array<LatencyHistogramBuckets> ;\n    public tail_bucket: number ;\n    constructor(base: _LatencyHistogram) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'buckets') >= 0) {\n            if (base.buckets) {\n                this.buckets = base.buckets.map((original) => newLatencyHistogramBucketsImpl(original));\n            } else {\n                this.buckets = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'tail_bucket') >= 0) {\n            this.tail_bucket = base.tail_bucket;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.buckets !== undefined) {\n            for (const item of this.buckets) {\n                if (item !== undefined && (item as LatencyHistogramBucketsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LatencyHistogramBucketsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newLatencyHistogramImpl(base: _LatencyHistogram): LatencyHistogramImpl {\n    return new LatencyHistogramImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LauncherStatus, LauncherStatus, LauncherStatusImpl, newLauncherStatusImpl } from './launcherStatus';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _LauncherSpec, LauncherSpec, LauncherSpecImpl, newLauncherSpecImpl } from './launcherSpec';\n\n\n/**\n * Object describing the properties of a Launcher. A launcher encompasses the configuration for launching a program via an agent connector, allowing the launched program\\'s requests to be proxied through Agilicus to the corresponding backend resources.  For example, an ERP system has an installed client on a computer, that uses network services, ie. TCP port(s). \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Launcher { \n    metadata?: MetadataWithId;\n    spec?: LauncherSpec;\n    status?: LauncherStatus;\n}\n\nexport interface Launcher extends _Launcher {\n    _builtin_original?: _Launcher;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LauncherImpl  implements _Launcher {\n    _builtin_original?: _Launcher = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: LauncherSpec  | undefined ;\n    public status: LauncherStatus  | undefined ;\n    constructor(base: _Launcher) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newLauncherImpl(base: _Launcher): LauncherImpl {\n    return new LauncherImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ExtraProcess, ExtraProcess, ExtraProcessImpl, newExtraProcessImpl } from './extraProcess';\nimport { _InterceptorConfig, InterceptorConfig, InterceptorConfigImpl, newInterceptorConfigImpl } from './interceptorConfig';\n\n\n/**\n * The configuration for a Launcher to be installed on the host computer. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LauncherConfig { \n    /**\n     * The application full path and name, located on the host computer.\n     */\n    command_path?: string;\n    /**\n     * The arguments necessary for the command to run.\n     */\n    command_arguments?: string;\n    /**\n     * The launcher start directory\n     */\n    start_in?: string;\n    interceptor_config?: InterceptorConfig;\n    /**\n     * If the launcher command requires the use of an interceptor.\n     */\n    do_intercept?: boolean;\n    /**\n     * If configured the launcher will provide local http access to shares attached to this launcher. They will be made available at http://localhost:<port>/org-id/share-name. \n     */\n    http_share_port?: number;\n    /**\n     * If proxify should use \\\"--no-console\\\"\n     */\n    hide_console?: boolean;\n    /**\n     * If proxify should disable the default http_proxy. This controls the proxify command invocation of \\\"--no-http-proxy\\\" \n     */\n    disable_http_proxy?: boolean;\n    /**\n     * When true, the launcher will run elevated as administrator. \n     */\n    run_as_admin?: boolean;\n    /**\n     * A set of out of process tasks which will be attached by the interceptor that are not part of the program\\'s process tree. Eg: - Background services - Side-processes started using a messaging protocol \n     */\n    extra_processes?: Array<ExtraProcess>;\n    /**\n     * When true, allows ending the existing running program during a launch \n     */\n    end_existing_if_running?: boolean;\n    /**\n     * When true in non-interception mode, the launcher continues to run until all descendants of the spawned process have terminated. Use this if the launched application is itself a launcher for something else -- i.e. it spawns the main application then exits. In such cases, you want the launcher to continue to run so that it can proxy requests for the main application and any of its descendants. \n     */\n    wait_for_all_descendants?: boolean;\n}\n\nexport interface LauncherConfig extends _LauncherConfig {\n    _builtin_original?: _LauncherConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LauncherConfigImpl  implements _LauncherConfig {\n    _builtin_original?: _LauncherConfig = undefined;\n    public command_path: string  | undefined ;\n    public command_arguments: string  | undefined ;\n    public start_in: string  | undefined ;\n    public interceptor_config: InterceptorConfig  | undefined ;\n    public do_intercept: boolean  | undefined ;\n    public http_share_port: number  | undefined ;\n    public hide_console: boolean  | undefined ;\n    public disable_http_proxy: boolean  | undefined ;\n    public run_as_admin: boolean  | undefined ;\n    public extra_processes: Array<ExtraProcess>  | undefined ;\n    public end_existing_if_running: boolean  | undefined ;\n    public wait_for_all_descendants: boolean  | undefined ;\n    constructor(base: _LauncherConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'command_path') >= 0) {\n            this.command_path = base.command_path;\n        }\n        if (Object.keys(base).findIndex(key => key === 'command_arguments') >= 0) {\n            this.command_arguments = base.command_arguments;\n        }\n        if (Object.keys(base).findIndex(key => key === 'start_in') >= 0) {\n            this.start_in = base.start_in;\n        }\n        if (Object.keys(base).findIndex(key => key === 'interceptor_config') >= 0) {\n            this.interceptor_config = base.interceptor_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'do_intercept') >= 0) {\n            this.do_intercept = base.do_intercept;\n        }\n        if (Object.keys(base).findIndex(key => key === 'http_share_port') >= 0) {\n            this.http_share_port = base.http_share_port;\n        }\n        if (Object.keys(base).findIndex(key => key === 'hide_console') >= 0) {\n            this.hide_console = base.hide_console;\n        }\n        if (Object.keys(base).findIndex(key => key === 'disable_http_proxy') >= 0) {\n            this.disable_http_proxy = base.disable_http_proxy;\n        }\n        if (Object.keys(base).findIndex(key => key === 'run_as_admin') >= 0) {\n            this.run_as_admin = base.run_as_admin;\n        }\n        if (Object.keys(base).findIndex(key => key === 'extra_processes') >= 0) {\n            if (base.extra_processes) {\n                this.extra_processes = base.extra_processes.map((original) => newExtraProcessImpl(original));\n            } else {\n                this.extra_processes = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'end_existing_if_running') >= 0) {\n            this.end_existing_if_running = base.end_existing_if_running;\n        }\n        if (Object.keys(base).findIndex(key => key === 'wait_for_all_descendants') >= 0) {\n            this.wait_for_all_descendants = base.wait_for_all_descendants;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.extra_processes !== undefined) {\n            for (const item of this.extra_processes) {\n                if (item !== undefined && (item as ExtraProcessImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ExtraProcessImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newLauncherConfigImpl(base: _LauncherConfig): LauncherConfigImpl {\n    return new LauncherConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourceTypeEnum, ResourceTypeEnum, ResourceTypeEnumImpl, newResourceTypeEnumImpl } from './resourceTypeEnum';\n\n\n/**\n * A child resource inside a Resource. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ResourceMember { \n    /**\n     * Unique identifier\n     */\n    id?: string;\n    resource_type?: ResourceTypeEnum;\n}\n\nexport interface ResourceMember extends _ResourceMember {\n    _builtin_original?: _ResourceMember;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ResourceMemberImpl  implements _ResourceMember {\n    _builtin_original?: _ResourceMember = undefined;\n    public id: string  | undefined ;\n    public resource_type: ResourceTypeEnum  | undefined ;\n    constructor(base: _ResourceMember) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_type') >= 0) {\n            this.resource_type = base.resource_type;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newResourceMemberImpl(base: _ResourceMember): ResourceMemberImpl {\n    return new ResourceMemberImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourceMember, ResourceMember, ResourceMemberImpl, newResourceMemberImpl } from './resourceMember';\nimport { _LauncherConfig, LauncherConfig, LauncherConfigImpl, newLauncherConfigImpl } from './launcherConfig';\nimport { _ResourceConfig, ResourceConfig, ResourceConfigImpl, newResourceConfigImpl } from './resourceConfig';\nimport { _AlternateModeSetting, AlternateModeSetting, AlternateModeSettingImpl, newAlternateModeSettingImpl } from './alternateModeSetting';\n\n\n/**\n * Object describing the spec of a Launcher\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LauncherSpec { \n    /**\n     * The launcher name. A launcher name must match to the following regular expression:   `^[a-zA-Z0-9-_ ]+$` \n     */\n    name?: string;\n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n    /**\n     * The resources that are necessary for this Launcher to run. For example, it could be an ApplicationServices using TCP port(s), or FileShareServices.\n     */\n    resource_members?: Array<ResourceMember>;\n    config?: LauncherConfig;\n    /**\n     * The associated applications that this launcher may launch.\n     */\n    applications?: Array<string>;\n    resource_config?: ResourceConfig;\n    alternate_mode_setting?: AlternateModeSetting;\n}\n\nexport interface LauncherSpec extends _LauncherSpec {\n    _builtin_original?: _LauncherSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LauncherSpecImpl  implements _LauncherSpec {\n    _builtin_original?: _LauncherSpec = undefined;\n    public name: string  | undefined ;\n    public org_id: string  | undefined ;\n    public resource_members: Array<ResourceMember>  | undefined ;\n    public config: LauncherConfig  | undefined ;\n    public applications: Array<string>  | undefined ;\n    public resource_config: ResourceConfig  | undefined ;\n    public alternate_mode_setting: AlternateModeSetting  | undefined ;\n    constructor(base: _LauncherSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_members') >= 0) {\n            if (base.resource_members) {\n                this.resource_members = base.resource_members.map((original) => newResourceMemberImpl(original));\n            } else {\n                this.resource_members = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'config') >= 0) {\n            this.config = base.config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'applications') >= 0) {\n            this.applications = base.applications;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_config') >= 0) {\n            this.resource_config = base.resource_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'alternate_mode_setting') >= 0) {\n            this.alternate_mode_setting = base.alternate_mode_setting;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.resource_members !== undefined) {\n            for (const item of this.resource_members) {\n                if (item !== undefined && (item as ResourceMemberImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ResourceMemberImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newLauncherSpecImpl(base: _LauncherSpec): LauncherSpecImpl {\n    return new LauncherSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _FileShareService, FileShareService, FileShareServiceImpl, newFileShareServiceImpl } from './fileShareService';\nimport { _AlternateModeStatus, AlternateModeStatus, AlternateModeStatusImpl, newAlternateModeStatusImpl } from './alternateModeStatus';\nimport { _ApplicationService, ApplicationService, ApplicationServiceImpl, newApplicationServiceImpl } from './applicationService';\n\n\n/**\n * Object describing the status of a Launcher\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LauncherStatus { \n    /**\n     * Application services utilized by this Launcher.\n     */\n    application_services?: Array<ApplicationService>;\n    /**\n     * FileShare services utilized by this Launcher\n     */\n    file_shares?: Array<FileShareService>;\n    alternate_mode_status?: AlternateModeStatus;\n}\n\nexport interface LauncherStatus extends _LauncherStatus {\n    _builtin_original?: _LauncherStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LauncherStatusImpl  implements _LauncherStatus {\n    _builtin_original?: _LauncherStatus = undefined;\n    public application_services: Array<ApplicationService>  | undefined ;\n    public file_shares: Array<FileShareService>  | undefined ;\n    public alternate_mode_status: AlternateModeStatus  | undefined ;\n    constructor(base: _LauncherStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'application_services') >= 0) {\n            if (base.application_services) {\n                this.application_services = base.application_services.map((original) => newApplicationServiceImpl(original));\n            } else {\n                this.application_services = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'file_shares') >= 0) {\n            if (base.file_shares) {\n                this.file_shares = base.file_shares.map((original) => newFileShareServiceImpl(original));\n            } else {\n                this.file_shares = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'alternate_mode_status') >= 0) {\n            this.alternate_mode_status = base.alternate_mode_status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.application_services !== undefined) {\n            for (const item of this.application_services) {\n                if (item !== undefined && (item as ApplicationServiceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationServiceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.file_shares !== undefined) {\n            for (const item of this.file_shares) {\n                if (item !== undefined && (item as FileShareServiceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as FileShareServiceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newLauncherStatusImpl(base: _LauncherStatus): LauncherStatusImpl {\n    return new LauncherStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The specifications for learning mode on a resource. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LearningModeSpec { \n    /**\n     * When to automatically end learning mode. New resources will not be created. In order to proceed either approve the resource, or extend the expiry time. \n     */\n    expiry_time?: Date;\n}\n\nexport interface LearningModeSpec extends _LearningModeSpec {\n    _builtin_original?: _LearningModeSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LearningModeSpecImpl  implements _LearningModeSpec {\n    _builtin_original?: _LearningModeSpec = undefined;\n    public expiry_time: Date  | undefined ;\n    constructor(base: _LearningModeSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'expiry_time') >= 0) {\n            this.expiry_time = base.expiry_time;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newLearningModeSpecImpl(base: _LearningModeSpec): LearningModeSpecImpl {\n    return new LearningModeSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _LicenseSpec, LicenseSpec, LicenseSpecImpl, newLicenseSpecImpl } from './licenseSpec';\n\n\n/**\n * A license to use a product, associated with a subscription at creation. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _License { \n    metadata?: MetadataWithId;\n    spec: LicenseSpec;\n}\n\nexport interface License extends _License {\n    _builtin_original?: _License;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LicenseImpl  implements _License {\n    _builtin_original?: _License = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: LicenseSpec ;\n    constructor(base: _License) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newLicenseImpl(base: _License): LicenseImpl {\n    return new LicenseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LicenseEvaluationInput, LicenseEvaluationInput, LicenseEvaluationInputImpl, newLicenseEvaluationInputImpl } from './licenseEvaluationInput';\n\n\n/**\n * Information about the license evaluation input (e.g. to which org it applies) \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LicenseEvaluationContext { \n    license_evaluation_input: LicenseEvaluationInput;\n    /**\n     * Unique identifier\n     */\n    readonly org_id: string;\n    /**\n     * Unique identifier\n     */\n    readonly subscription_id?: string;\n}\n\nexport interface LicenseEvaluationContext extends _LicenseEvaluationContext {\n    _builtin_original?: _LicenseEvaluationContext;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LicenseEvaluationContextImpl  implements _LicenseEvaluationContext {\n    _builtin_original?: _LicenseEvaluationContext = undefined;\n    public license_evaluation_input: LicenseEvaluationInput ;\n    public readonly org_id: string ;\n    public readonly subscription_id: string  | undefined ;\n    constructor(base: _LicenseEvaluationContext) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'license_evaluation_input') >= 0) {\n            this.license_evaluation_input = base.license_evaluation_input;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'subscription_id') >= 0) {\n            this.subscription_id = base.subscription_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newLicenseEvaluationContextImpl(base: _LicenseEvaluationContext): LicenseEvaluationContextImpl {\n    return new LicenseEvaluationContextImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _SubscriptionEvaluationInput, SubscriptionEvaluationInput, SubscriptionEvaluationInputImpl, newSubscriptionEvaluationInputImpl } from './subscriptionEvaluationInput';\n\n\n/**\n * The input document used when evaluting a license \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LicenseEvaluationInput { \n  [key: string]: object | any;\n\n\n    subscription?: SubscriptionEvaluationInput;\n}\n\nexport interface LicenseEvaluationInput extends _LicenseEvaluationInput {\n    _builtin_original?: _LicenseEvaluationInput;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LicenseEvaluationInputImpl  implements _LicenseEvaluationInput {\n    _builtin_original?: _LicenseEvaluationInput = undefined;\n    public subscription: SubscriptionEvaluationInput  | undefined ;\n    constructor(base: _LicenseEvaluationInput) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'subscription') >= 0) {\n            this.subscription = base.subscription;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newLicenseEvaluationInputImpl(base: _LicenseEvaluationInput): LicenseEvaluationInputImpl {\n    return new LicenseEvaluationInputImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LicenseConstraint, LicenseConstraint, LicenseConstraintImpl, newLicenseConstraintImpl } from './licenseConstraint';\n\n\n/**\n * The definition of a License. References a product within a specific product table by name. May override the default constraints if needed. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LicenseSpec { \n    /**\n     * The version of a product table, used to uniquely identify it.\n     */\n    product_table_version: string;\n    /**\n     * The unique name of a product \n     */\n    product_name: string;\n    /**\n     * Overrides for constraints applied to this license. Only use in exceptional circumstances. \n     */\n    license_constraints?: Array<LicenseConstraint>;\n    /**\n     * A dictionary of values to pass in to constraint evaluation. These values will be provided to the constraints via the \\'input_vars\\' variable. Constraint variables are merged using the same priority as the constraints themselves. \n     */\n    constraint_variables?: { [key: string]: object | undefined; };\n}\n\nexport interface LicenseSpec extends _LicenseSpec {\n    _builtin_original?: _LicenseSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LicenseSpecImpl  implements _LicenseSpec {\n    _builtin_original?: _LicenseSpec = undefined;\n    public product_table_version: string ;\n    public product_name: string ;\n    public license_constraints: Array<LicenseConstraint>  | undefined ;\n    public constraint_variables: { [key: string]: object | undefined; }  | undefined ;\n    constructor(base: _LicenseSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'product_table_version') >= 0) {\n            this.product_table_version = base.product_table_version;\n        }\n        if (Object.keys(base).findIndex(key => key === 'product_name') >= 0) {\n            this.product_name = base.product_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'license_constraints') >= 0) {\n            if (base.license_constraints) {\n                this.license_constraints = base.license_constraints.map((original) => newLicenseConstraintImpl(original));\n            } else {\n                this.license_constraints = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'constraint_variables') >= 0) {\n            this.constraint_variables = base.constraint_variables;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.license_constraints !== undefined) {\n            for (const item of this.license_constraints) {\n                if (item !== undefined && (item as LicenseConstraintImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LicenseConstraintImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newLicenseSpecImpl(base: _LicenseSpec): LicenseSpecImpl {\n    return new LicenseSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LicenseConstraint, LicenseConstraint, LicenseConstraintImpl, newLicenseConstraintImpl } from './licenseConstraint';\n\n\n/**\n * A feature of the system \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LicensedFeature { \n    /**\n     * The unique name of a feature \n     */\n    name: string;\n    /**\n     * Feature level constraints. Typically describe generic constraints that would apply to all products with this feature (e.g. a maximum) \n     */\n    license_constraints: Array<LicenseConstraint>;\n    /**\n     * A dictionary of values to pass in to constraint evaluation. These values will be provided to the constraints via the \\'input_vars\\' variable. Constraint variables are merged using the same priority as the constraints themselves. \n     */\n    constraint_variables?: { [key: string]: object | undefined; };\n}\n\nexport interface LicensedFeature extends _LicensedFeature {\n    _builtin_original?: _LicensedFeature;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LicensedFeatureImpl  implements _LicensedFeature {\n    _builtin_original?: _LicensedFeature = undefined;\n    public name: string ;\n    public license_constraints: Array<LicenseConstraint> ;\n    public constraint_variables: { [key: string]: object | undefined; }  | undefined ;\n    constructor(base: _LicensedFeature) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'license_constraints') >= 0) {\n            if (base.license_constraints) {\n                this.license_constraints = base.license_constraints.map((original) => newLicenseConstraintImpl(original));\n            } else {\n                this.license_constraints = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'constraint_variables') >= 0) {\n            this.constraint_variables = base.constraint_variables;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.license_constraints !== undefined) {\n            for (const item of this.license_constraints) {\n                if (item !== undefined && (item as LicenseConstraintImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LicenseConstraintImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newLicensedFeatureImpl(base: _LicensedFeature): LicensedFeatureImpl {\n    return new LicensedFeatureImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A price for a product: what it is used for, and a link to the actual price id in stripe \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LicensedProductPrice { \n    /**\n     * What the customer is charged for\n     */\n    metric: string;\n    stripe_price_id: string;\n}\n\nexport interface LicensedProductPrice extends _LicensedProductPrice {\n    _builtin_original?: _LicensedProductPrice;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LicensedProductPriceImpl  implements _LicensedProductPrice {\n    _builtin_original?: _LicensedProductPrice = undefined;\n    public metric: string ;\n    public stripe_price_id: string ;\n    constructor(base: _LicensedProductPrice) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metric') >= 0) {\n            this.metric = base.metric;\n        }\n        if (Object.keys(base).findIndex(key => key === 'stripe_price_id') >= 0) {\n            this.stripe_price_id = base.stripe_price_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newLicensedProductPriceImpl(base: _LicensedProductPrice): LicensedProductPriceImpl {\n    return new LicensedProductPriceImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LicensedProductPrice, LicensedProductPrice, LicensedProductPriceImpl, newLicensedProductPriceImpl } from './licensedProductPrice';\n\n\n/**\n * A breakdown of prices for a product for a given currency. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LicensedProductPriceBreakdown { \n    /**\n     * The currency in which the prices are charged.\n     */\n    currency: string;\n    /**\n     * The prices for this product. This is a list of prices, for each thing we might charge for. \n     */\n    prices: Array<LicensedProductPrice>;\n}\n\nexport interface LicensedProductPriceBreakdown extends _LicensedProductPriceBreakdown {\n    _builtin_original?: _LicensedProductPriceBreakdown;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LicensedProductPriceBreakdownImpl  implements _LicensedProductPriceBreakdown {\n    _builtin_original?: _LicensedProductPriceBreakdown = undefined;\n    public currency: string ;\n    public prices: Array<LicensedProductPrice> ;\n    constructor(base: _LicensedProductPriceBreakdown) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'currency') >= 0) {\n            this.currency = base.currency;\n        }\n        if (Object.keys(base).findIndex(key => key === 'prices') >= 0) {\n            if (base.prices) {\n                this.prices = base.prices.map((original) => newLicensedProductPriceImpl(original));\n            } else {\n                this.prices = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.prices !== undefined) {\n            for (const item of this.prices) {\n                if (item !== undefined && (item as LicensedProductPriceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LicensedProductPriceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newLicensedProductPriceBreakdownImpl(base: _LicensedProductPriceBreakdown): LicensedProductPriceBreakdownImpl {\n    return new LicensedProductPriceBreakdownImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LicenseConstraint, LicenseConstraint, LicenseConstraintImpl, newLicenseConstraintImpl } from './licenseConstraint';\nimport { _LicensedProductPriceBreakdown, LicensedProductPriceBreakdown, LicensedProductPriceBreakdownImpl, newLicensedProductPriceBreakdownImpl } from './licensedProductPriceBreakdown';\n\n\n/**\n * A product purchaed by a customer. Licenses point to products. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LicensedProduct { \n    /**\n     * The unique name of a product \n     */\n    name: string;\n    /**\n     * The features included in this product. This ultimately determines which contraints will be provided when evaluating the license. \n     */\n    included_features: Array<string>;\n    /**\n     * The constraints associated with the product. Can be used to fill in missing details for feature-level constraints. \n     */\n    license_constraints: Array<LicenseConstraint>;\n    /**\n     * A dictionary of values to pass in to constraint evaluation. These values will be provided to the constraints via the \\'input_vars\\' variable. Constraint variables are merged using the same priority as the constraints themselves. \n     */\n    constraint_variables?: { [key: string]: object | undefined; };\n    /**\n     * The prices for this product. Each item represents the prices we charge in a given currency. \n     */\n    price_breakdowns?: Array<LicensedProductPriceBreakdown>;\n}\n\nexport interface LicensedProduct extends _LicensedProduct {\n    _builtin_original?: _LicensedProduct;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LicensedProductImpl  implements _LicensedProduct {\n    _builtin_original?: _LicensedProduct = undefined;\n    public name: string ;\n    public included_features: Array<string> ;\n    public license_constraints: Array<LicenseConstraint> ;\n    public constraint_variables: { [key: string]: object | undefined; }  | undefined ;\n    public price_breakdowns: Array<LicensedProductPriceBreakdown>  | undefined ;\n    constructor(base: _LicensedProduct) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'included_features') >= 0) {\n            this.included_features = base.included_features;\n        }\n        if (Object.keys(base).findIndex(key => key === 'license_constraints') >= 0) {\n            if (base.license_constraints) {\n                this.license_constraints = base.license_constraints.map((original) => newLicenseConstraintImpl(original));\n            } else {\n                this.license_constraints = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'constraint_variables') >= 0) {\n            this.constraint_variables = base.constraint_variables;\n        }\n        if (Object.keys(base).findIndex(key => key === 'price_breakdowns') >= 0) {\n            if (base.price_breakdowns) {\n                this.price_breakdowns = base.price_breakdowns.map((original) => newLicensedProductPriceBreakdownImpl(original));\n            } else {\n                this.price_breakdowns = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.license_constraints !== undefined) {\n            for (const item of this.license_constraints) {\n                if (item !== undefined && (item as LicenseConstraintImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LicenseConstraintImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.price_breakdowns !== undefined) {\n            for (const item of this.price_breakdowns) {\n                if (item !== undefined && (item as LicensedProductPriceBreakdownImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LicensedProductPriceBreakdownImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newLicensedProductImpl(base: _LicensedProduct): LicensedProductImpl {\n    return new LicensedProductImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _APIKey, APIKey, APIKeyImpl, newAPIKeyImpl } from './aPIKey';\n\n\n/**\n * Response object for the list of API Keys\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListAPIKeysResponse { \n    /**\n     * The matching APIKey objects\n     */\n    api_keys: Array<APIKey>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The next page to fetch when searching forwards. If an empty string, the current page is the last page. \n     */\n    next_api_key_id?: string;\n    /**\n     * The next page to fetch when searching backwards. If an empty string, the current page is the first page. \n     */\n    previous_api_key_id?: string;\n    /**\n     * The next page to fetch when searching. If an empty string, the current page is the last page. \n     */\n    page_at_created_date?: Date;\n    /**\n     * The next page to fetch when switching directions. If an empty string, the current page is the first page. \n     */\n    previous_created_date?: Date;\n}\n\nexport interface ListAPIKeysResponse extends _ListAPIKeysResponse {\n    _builtin_original?: _ListAPIKeysResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListAPIKeysResponseImpl  implements _ListAPIKeysResponse {\n    _builtin_original?: _ListAPIKeysResponse = undefined;\n    public api_keys: Array<APIKey> ;\n    public limit: number ;\n    public next_api_key_id: string  | undefined ;\n    public previous_api_key_id: string  | undefined ;\n    public page_at_created_date: Date  | undefined ;\n    public previous_created_date: Date  | undefined ;\n    constructor(base: _ListAPIKeysResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'api_keys') >= 0) {\n            if (base.api_keys) {\n                this.api_keys = base.api_keys.map((original) => newAPIKeyImpl(original));\n            } else {\n                this.api_keys = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'next_api_key_id') >= 0) {\n            this.next_api_key_id = base.next_api_key_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'previous_api_key_id') >= 0) {\n            this.previous_api_key_id = base.previous_api_key_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_created_date') >= 0) {\n            this.page_at_created_date = base.page_at_created_date;\n        }\n        if (Object.keys(base).findIndex(key => key === 'previous_created_date') >= 0) {\n            this.previous_created_date = base.previous_created_date;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.api_keys !== undefined) {\n            for (const item of this.api_keys) {\n                if (item !== undefined && (item as APIKeyImpl)._remove_builtin_extensions !== undefined) {\n                    (item as APIKeyImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListAPIKeysResponseImpl(base: _ListAPIKeysResponse): ListAPIKeysResponseImpl {\n    return new ListAPIKeysResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AccessRequests, AccessRequests, AccessRequestsImpl, newAccessRequestsImpl } from './accessRequests';\n\n\n/**\n * Response object for an access request query. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListAccessRequestsResponse { \n    /**\n     * The matching AccessRequests objects\n     */\n    access_requests: Array<AccessRequests>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The first email on the current page. Can be used with \\\"backwards\\\" as the search_direction_query parameter to retrieve the previous page\\'s entries. Is an empty string if the current page is the first page. \n     */\n    previous_page_email?: string;\n    /**\n     * The first email on the next page. Can be used with \\\"forwards\\\" as the search_direction_query parameter to retrieve the next page\\'s entries. Is an empty string if the current page is the last page. \n     */\n    next_page_email?: string;\n}\n\nexport interface ListAccessRequestsResponse extends _ListAccessRequestsResponse {\n    _builtin_original?: _ListAccessRequestsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListAccessRequestsResponseImpl  implements _ListAccessRequestsResponse {\n    _builtin_original?: _ListAccessRequestsResponse = undefined;\n    public access_requests: Array<AccessRequests> ;\n    public limit: number ;\n    public previous_page_email: string  | undefined ;\n    public next_page_email: string  | undefined ;\n    constructor(base: _ListAccessRequestsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'access_requests') >= 0) {\n            if (base.access_requests) {\n                this.access_requests = base.access_requests.map((original) => newAccessRequestsImpl(original));\n            } else {\n                this.access_requests = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'previous_page_email') >= 0) {\n            this.previous_page_email = base.previous_page_email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'next_page_email') >= 0) {\n            this.next_page_email = base.next_page_email;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.access_requests !== undefined) {\n            for (const item of this.access_requests) {\n                if (item !== undefined && (item as AccessRequestsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AccessRequestsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListAccessRequestsResponseImpl(base: _ListAccessRequestsResponse): ListAccessRequestsResponseImpl {\n    return new ListAccessRequestsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Metrics for a time interval\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TimeIntervalMetrics { \n    /**\n     * Beginning of the interval for which the metrics were retrieved\n     */\n    readonly time?: Date;\n    /**\n     * Retrieved metric (e.g. number of active users)\n     */\n    readonly metric?: number;\n}\n\nexport interface TimeIntervalMetrics extends _TimeIntervalMetrics {\n    _builtin_original?: _TimeIntervalMetrics;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TimeIntervalMetricsImpl  implements _TimeIntervalMetrics {\n    _builtin_original?: _TimeIntervalMetrics = undefined;\n    public readonly time: Date  | undefined ;\n    public readonly metric: number  | undefined ;\n    constructor(base: _TimeIntervalMetrics) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'time') >= 0) {\n            this.time = base.time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'metric') >= 0) {\n            this.metric = base.metric;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTimeIntervalMetricsImpl(base: _TimeIntervalMetrics): TimeIntervalMetricsImpl {\n    return new TimeIntervalMetricsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _TimeIntervalMetrics, TimeIntervalMetrics, TimeIntervalMetricsImpl, newTimeIntervalMetricsImpl } from './timeIntervalMetrics';\n\n\n/**\n * Response object for active users query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListActiveUsersResponse { \n    /**\n     * Active user metrics per time interval\n     */\n    active_users?: Array<TimeIntervalMetrics>;\n}\n\nexport interface ListActiveUsersResponse extends _ListActiveUsersResponse {\n    _builtin_original?: _ListActiveUsersResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListActiveUsersResponseImpl  implements _ListActiveUsersResponse {\n    _builtin_original?: _ListActiveUsersResponse = undefined;\n    public active_users: Array<TimeIntervalMetrics>  | undefined ;\n    constructor(base: _ListActiveUsersResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'active_users') >= 0) {\n            if (base.active_users) {\n                this.active_users = base.active_users.map((original) => newTimeIntervalMetricsImpl(original));\n            } else {\n                this.active_users = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.active_users !== undefined) {\n            for (const item of this.active_users) {\n                if (item !== undefined && (item as TimeIntervalMetricsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as TimeIntervalMetricsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListActiveUsersResponseImpl(base: _ListActiveUsersResponse): ListActiveUsersResponseImpl {\n    return new ListActiveUsersResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorInstance, AgentConnectorInstance, AgentConnectorInstanceImpl, newAgentConnectorInstanceImpl } from './agentConnectorInstance';\n\n\n/**\n * Response object for agent connector instance list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListAgentConnectorInstanceResponse { \n    /**\n     * List of agent connectors instances\n     */\n    agent_connector_instances: Array<AgentConnectorInstance>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n}\n\nexport interface ListAgentConnectorInstanceResponse extends _ListAgentConnectorInstanceResponse {\n    _builtin_original?: _ListAgentConnectorInstanceResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListAgentConnectorInstanceResponseImpl  implements _ListAgentConnectorInstanceResponse {\n    _builtin_original?: _ListAgentConnectorInstanceResponse = undefined;\n    public agent_connector_instances: Array<AgentConnectorInstance> ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _ListAgentConnectorInstanceResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'agent_connector_instances') >= 0) {\n            if (base.agent_connector_instances) {\n                this.agent_connector_instances = base.agent_connector_instances.map((original) => newAgentConnectorInstanceImpl(original));\n            } else {\n                this.agent_connector_instances = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.agent_connector_instances !== undefined) {\n            for (const item of this.agent_connector_instances) {\n                if (item !== undefined && (item as AgentConnectorInstanceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AgentConnectorInstanceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListAgentConnectorInstanceResponseImpl(base: _ListAgentConnectorInstanceResponse): ListAgentConnectorInstanceResponseImpl {\n    return new ListAgentConnectorInstanceResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorStats, AgentConnectorStats, AgentConnectorStatsImpl, newAgentConnectorStatsImpl } from './agentConnectorStats';\n\n\n/**\n * Response object for retrieval of stats for all instances within an agent connector.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListAgentConnectorInstanceStatsResponse { \n    /**\n     * List of stats for all instances for a connector\n     */\n    agent_connector_instances_stats: Array<AgentConnectorStats>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n}\n\nexport interface ListAgentConnectorInstanceStatsResponse extends _ListAgentConnectorInstanceStatsResponse {\n    _builtin_original?: _ListAgentConnectorInstanceStatsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListAgentConnectorInstanceStatsResponseImpl  implements _ListAgentConnectorInstanceStatsResponse {\n    _builtin_original?: _ListAgentConnectorInstanceStatsResponse = undefined;\n    public agent_connector_instances_stats: Array<AgentConnectorStats> ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _ListAgentConnectorInstanceStatsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'agent_connector_instances_stats') >= 0) {\n            if (base.agent_connector_instances_stats) {\n                this.agent_connector_instances_stats = base.agent_connector_instances_stats.map((original) => newAgentConnectorStatsImpl(original));\n            } else {\n                this.agent_connector_instances_stats = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.agent_connector_instances_stats !== undefined) {\n            for (const item of this.agent_connector_instances_stats) {\n                if (item !== undefined && (item as AgentConnectorStatsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AgentConnectorStatsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListAgentConnectorInstanceStatsResponseImpl(base: _ListAgentConnectorInstanceStatsResponse): ListAgentConnectorInstanceStatsResponseImpl {\n    return new ListAgentConnectorInstanceStatsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AgentConnectorProxy, AgentConnectorProxy, AgentConnectorProxyImpl, newAgentConnectorProxyImpl } from './agentConnectorProxy';\n\n\n/**\n * Response object for listing AgentConnectorProxy\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListAgentConnectorProxyResponse { \n    /**\n     * List of AgentConnectorProxy\n     */\n    connector_proxies: Array<AgentConnectorProxy>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n}\n\nexport interface ListAgentConnectorProxyResponse extends _ListAgentConnectorProxyResponse {\n    _builtin_original?: _ListAgentConnectorProxyResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListAgentConnectorProxyResponseImpl  implements _ListAgentConnectorProxyResponse {\n    _builtin_original?: _ListAgentConnectorProxyResponse = undefined;\n    public connector_proxies: Array<AgentConnectorProxy> ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _ListAgentConnectorProxyResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'connector_proxies') >= 0) {\n            if (base.connector_proxies) {\n                this.connector_proxies = base.connector_proxies.map((original) => newAgentConnectorProxyImpl(original));\n            } else {\n                this.connector_proxies = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.connector_proxies !== undefined) {\n            for (const item of this.connector_proxies) {\n                if (item !== undefined && (item as AgentConnectorProxyImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AgentConnectorProxyImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListAgentConnectorProxyResponseImpl(base: _ListAgentConnectorProxyResponse): ListAgentConnectorProxyResponseImpl {\n    return new ListAgentConnectorProxyResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PageInfo, PageInfo, PageInfoImpl, newPageInfoImpl } from './pageInfo';\nimport { _AgentConnector, AgentConnector, AgentConnectorImpl, newAgentConnectorImpl } from './agentConnector';\n\n\n/**\n * Response object for agent connector list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListAgentConnectorResponse { \n    /**\n     * List of agent connectors\n     */\n    agent_connectors: Array<AgentConnector>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n    /**\n     * The name to request in the pagination query to get the next page.\n     */\n    page_at_name?: string;\n    page_info?: PageInfo;\n}\n\nexport interface ListAgentConnectorResponse extends _ListAgentConnectorResponse {\n    _builtin_original?: _ListAgentConnectorResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListAgentConnectorResponseImpl  implements _ListAgentConnectorResponse {\n    _builtin_original?: _ListAgentConnectorResponse = undefined;\n    public agent_connectors: Array<AgentConnector> ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    public page_at_name: string  | undefined ;\n    public page_info: PageInfo  | undefined ;\n    constructor(base: _ListAgentConnectorResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'agent_connectors') >= 0) {\n            if (base.agent_connectors) {\n                this.agent_connectors = base.agent_connectors.map((original) => newAgentConnectorImpl(original));\n            } else {\n                this.agent_connectors = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_name') >= 0) {\n            this.page_at_name = base.page_at_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_info') >= 0) {\n            this.page_info = base.page_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.agent_connectors !== undefined) {\n            for (const item of this.agent_connectors) {\n                if (item !== undefined && (item as AgentConnectorImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AgentConnectorImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListAgentConnectorResponseImpl(base: _ListAgentConnectorResponse): ListAgentConnectorResponseImpl {\n    return new ListAgentConnectorResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PageInfo, PageInfo, PageInfoImpl, newPageInfoImpl } from './pageInfo';\nimport { _ApplicationService, ApplicationService, ApplicationServiceImpl, newApplicationServiceImpl } from './applicationService';\n\n\n/**\n * Response object for application service list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListApplicationServicesResponse { \n    /**\n     * List of application services\n     */\n    application_services?: Array<ApplicationService>;\n    page_info?: PageInfo;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit?: number;\n}\n\nexport interface ListApplicationServicesResponse extends _ListApplicationServicesResponse {\n    _builtin_original?: _ListApplicationServicesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListApplicationServicesResponseImpl  implements _ListApplicationServicesResponse {\n    _builtin_original?: _ListApplicationServicesResponse = undefined;\n    public application_services: Array<ApplicationService>  | undefined ;\n    public page_info: PageInfo  | undefined ;\n    public limit: number  | undefined ;\n    constructor(base: _ListApplicationServicesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'application_services') >= 0) {\n            if (base.application_services) {\n                this.application_services = base.application_services.map((original) => newApplicationServiceImpl(original));\n            } else {\n                this.application_services = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_info') >= 0) {\n            this.page_info = base.page_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.application_services !== undefined) {\n            for (const item of this.application_services) {\n                if (item !== undefined && (item as ApplicationServiceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationServiceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListApplicationServicesResponseImpl(base: _ListApplicationServicesResponse): ListApplicationServicesResponseImpl {\n    return new ListApplicationServicesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ApplicationSummary, ApplicationSummary, ApplicationSummaryImpl, newApplicationSummaryImpl } from './applicationSummary';\n\n\n/**\n * Response object for querying many application summaries.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListApplicationSummaryResponse { \n    /**\n     * The matching ApplicationSummary objects\n     */\n    application_summaries: Array<ApplicationSummary>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListApplicationSummaryResponse extends _ListApplicationSummaryResponse {\n    _builtin_original?: _ListApplicationSummaryResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListApplicationSummaryResponseImpl  implements _ListApplicationSummaryResponse {\n    _builtin_original?: _ListApplicationSummaryResponse = undefined;\n    public application_summaries: Array<ApplicationSummary> ;\n    public limit: number ;\n    constructor(base: _ListApplicationSummaryResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'application_summaries') >= 0) {\n            if (base.application_summaries) {\n                this.application_summaries = base.application_summaries.map((original) => newApplicationSummaryImpl(original));\n            } else {\n                this.application_summaries = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.application_summaries !== undefined) {\n            for (const item of this.application_summaries) {\n                if (item !== undefined && (item as ApplicationSummaryImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationSummaryImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListApplicationSummaryResponseImpl(base: _ListApplicationSummaryResponse): ListApplicationSummaryResponseImpl {\n    return new ListApplicationSummaryResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PageInfo, PageInfo, PageInfoImpl, newPageInfoImpl } from './pageInfo';\nimport { _Application, Application, ApplicationImpl, newApplicationImpl } from './application';\n\n\n/**\n * Response object for application list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListApplicationsResponse { \n    /**\n     * List of applications\n     */\n    applications?: Array<Application>;\n    page_info?: PageInfo;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit?: number;\n}\n\nexport interface ListApplicationsResponse extends _ListApplicationsResponse {\n    _builtin_original?: _ListApplicationsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListApplicationsResponseImpl  implements _ListApplicationsResponse {\n    _builtin_original?: _ListApplicationsResponse = undefined;\n    public applications: Array<Application>  | undefined ;\n    public page_info: PageInfo  | undefined ;\n    public limit: number  | undefined ;\n    constructor(base: _ListApplicationsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'applications') >= 0) {\n            if (base.applications) {\n                this.applications = base.applications.map((original) => newApplicationImpl(original));\n            } else {\n                this.applications = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_info') >= 0) {\n            this.page_info = base.page_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.applications !== undefined) {\n            for (const item of this.applications) {\n                if (item !== undefined && (item as ApplicationImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListApplicationsResponseImpl(base: _ListApplicationsResponse): ListApplicationsResponseImpl {\n    return new ListApplicationsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AuditDestination, AuditDestination, AuditDestinationImpl, newAuditDestinationImpl } from './auditDestination';\n\n\n/**\n * The results of listing audit destinations\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListAuditDestinationsResponse { \n    /**\n     * List of audit destinations\n     */\n    audit_destinations?: Array<AuditDestination>;\n    /**\n     * Limit on number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListAuditDestinationsResponse extends _ListAuditDestinationsResponse {\n    _builtin_original?: _ListAuditDestinationsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListAuditDestinationsResponseImpl  implements _ListAuditDestinationsResponse {\n    _builtin_original?: _ListAuditDestinationsResponse = undefined;\n    public audit_destinations: Array<AuditDestination>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListAuditDestinationsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'audit_destinations') >= 0) {\n            if (base.audit_destinations) {\n                this.audit_destinations = base.audit_destinations.map((original) => newAuditDestinationImpl(original));\n            } else {\n                this.audit_destinations = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.audit_destinations !== undefined) {\n            for (const item of this.audit_destinations) {\n                if (item !== undefined && (item as AuditDestinationImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AuditDestinationImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListAuditDestinationsResponseImpl(base: _ListAuditDestinationsResponse): ListAuditDestinationsResponseImpl {\n    return new ListAuditDestinationsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Audit, Audit, AuditImpl, newAuditImpl } from './audit';\n\n\n/**\n * The results of the audit query.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListAuditsResponse { \n    /**\n     * List of audits\n     */\n    audits?: Array<Audit>;\n    /**\n     * Limit on number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListAuditsResponse extends _ListAuditsResponse {\n    _builtin_original?: _ListAuditsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListAuditsResponseImpl  implements _ListAuditsResponse {\n    _builtin_original?: _ListAuditsResponse = undefined;\n    public audits: Array<Audit>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListAuditsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'audits') >= 0) {\n            if (base.audits) {\n                this.audits = base.audits.map((original) => newAuditImpl(original));\n            } else {\n                this.audits = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.audits !== undefined) {\n            for (const item of this.audits) {\n                if (item !== undefined && (item as AuditImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AuditImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListAuditsResponseImpl(base: _ListAuditsResponse): ListAuditsResponseImpl {\n    return new ListAuditsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AuthAudits, AuthAudits, AuthAuditsImpl, newAuthAuditsImpl } from './authAudits';\n\n\n/**\n * The results of the audit query.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListAuthAuditsResponse { \n    /**\n     * List of audit records\n     */\n    auth_audits?: Array<AuthAudits>;\n    /**\n     * Limit on number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListAuthAuditsResponse extends _ListAuthAuditsResponse {\n    _builtin_original?: _ListAuthAuditsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListAuthAuditsResponseImpl  implements _ListAuthAuditsResponse {\n    _builtin_original?: _ListAuthAuditsResponse = undefined;\n    public auth_audits: Array<AuthAudits>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListAuthAuditsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'auth_audits') >= 0) {\n            if (base.auth_audits) {\n                this.auth_audits = base.auth_audits.map((original) => newAuthAuditsImpl(original));\n            } else {\n                this.auth_audits = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.auth_audits !== undefined) {\n            for (const item of this.auth_audits) {\n                if (item !== undefined && (item as AuthAuditsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AuthAuditsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListAuthAuditsResponseImpl(base: _ListAuthAuditsResponse): ListAuthAuditsResponseImpl {\n    return new ListAuthAuditsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AuthenticationDocument, AuthenticationDocument, AuthenticationDocumentImpl, newAuthenticationDocumentImpl } from './authenticationDocument';\n\n\n/**\n * Response object for the list of AuthenticationDocuments\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListAuthenticationDocumentResponse { \n    /**\n     * The matching AuthenticationDocument objects\n     */\n    authentication_documents: Array<AuthenticationDocument>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListAuthenticationDocumentResponse extends _ListAuthenticationDocumentResponse {\n    _builtin_original?: _ListAuthenticationDocumentResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListAuthenticationDocumentResponseImpl  implements _ListAuthenticationDocumentResponse {\n    _builtin_original?: _ListAuthenticationDocumentResponse = undefined;\n    public authentication_documents: Array<AuthenticationDocument> ;\n    public limit: number ;\n    constructor(base: _ListAuthenticationDocumentResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'authentication_documents') >= 0) {\n            if (base.authentication_documents) {\n                this.authentication_documents = base.authentication_documents.map((original) => newAuthenticationDocumentImpl(original));\n            } else {\n                this.authentication_documents = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.authentication_documents !== undefined) {\n            for (const item of this.authentication_documents) {\n                if (item !== undefined && (item as AuthenticationDocumentImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AuthenticationDocumentImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListAuthenticationDocumentResponseImpl(base: _ListAuthenticationDocumentResponse): ListAuthenticationDocumentResponseImpl {\n    return new ListAuthenticationDocumentResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _BillingAccount, BillingAccount, BillingAccountImpl, newBillingAccountImpl } from './billingAccount';\n\n\n/**\n * Response object for billing accounts query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListBillingAccountsResponse { \n    /**\n     * List of billing accounts\n     */\n    billing_accounts?: Array<BillingAccount>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n    /**\n     * The next page to fetch when searching backwards. If an empty string, the current page is the first page. \n     */\n    previous_id?: string;\n}\n\nexport interface ListBillingAccountsResponse extends _ListBillingAccountsResponse {\n    _builtin_original?: _ListBillingAccountsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListBillingAccountsResponseImpl  implements _ListBillingAccountsResponse {\n    _builtin_original?: _ListBillingAccountsResponse = undefined;\n    public billing_accounts: Array<BillingAccount>  | undefined ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    public previous_id: string  | undefined ;\n    constructor(base: _ListBillingAccountsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'billing_accounts') >= 0) {\n            if (base.billing_accounts) {\n                this.billing_accounts = base.billing_accounts.map((original) => newBillingAccountImpl(original));\n            } else {\n                this.billing_accounts = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'previous_id') >= 0) {\n            this.previous_id = base.previous_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.billing_accounts !== undefined) {\n            for (const item of this.billing_accounts) {\n                if (item !== undefined && (item as BillingAccountImpl)._remove_builtin_extensions !== undefined) {\n                    (item as BillingAccountImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListBillingAccountsResponseImpl(base: _ListBillingAccountsResponse): ListBillingAccountsResponseImpl {\n    return new ListBillingAccountsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _BillingBalanceTransaction, BillingBalanceTransaction, BillingBalanceTransactionImpl, newBillingBalanceTransactionImpl } from './billingBalanceTransaction';\n\n\n/**\n * Response object for customer balance transactions.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListBillingBalanceTransactions { \n    /**\n     * Whether or not there are more elements available after this set. If false, this set comprises the end of the list. \n     */\n    has_more?: boolean;\n    /**\n     * A list of Balance Transactions \n     */\n    data?: Array<BillingBalanceTransaction>;\n}\n\nexport interface ListBillingBalanceTransactions extends _ListBillingBalanceTransactions {\n    _builtin_original?: _ListBillingBalanceTransactions;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListBillingBalanceTransactionsImpl  implements _ListBillingBalanceTransactions {\n    _builtin_original?: _ListBillingBalanceTransactions = undefined;\n    public has_more: boolean  | undefined ;\n    public data: Array<BillingBalanceTransaction>  | undefined ;\n    constructor(base: _ListBillingBalanceTransactions) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'has_more') >= 0) {\n            this.has_more = base.has_more;\n        }\n        if (Object.keys(base).findIndex(key => key === 'data') >= 0) {\n            if (base.data) {\n                this.data = base.data.map((original) => newBillingBalanceTransactionImpl(original));\n            } else {\n                this.data = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.data !== undefined) {\n            for (const item of this.data) {\n                if (item !== undefined && (item as BillingBalanceTransactionImpl)._remove_builtin_extensions !== undefined) {\n                    (item as BillingBalanceTransactionImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListBillingBalanceTransactionsImpl(base: _ListBillingBalanceTransactions): ListBillingBalanceTransactionsImpl {\n    return new ListBillingBalanceTransactionsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _BillingCheckoutSession, BillingCheckoutSession, BillingCheckoutSessionImpl, newBillingCheckoutSessionImpl } from './billingCheckoutSession';\n\n\n/**\n * Response object for listing checkout sessions.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListBillingCheckoutSessions { \n    /**\n     * Whether or not there are more elements available after this set. If false, this set comprises the end of the list. \n     */\n    has_more?: boolean;\n    /**\n     * A list of checkout sessions. \n     */\n    data?: Array<BillingCheckoutSession>;\n}\n\nexport interface ListBillingCheckoutSessions extends _ListBillingCheckoutSessions {\n    _builtin_original?: _ListBillingCheckoutSessions;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListBillingCheckoutSessionsImpl  implements _ListBillingCheckoutSessions {\n    _builtin_original?: _ListBillingCheckoutSessions = undefined;\n    public has_more: boolean  | undefined ;\n    public data: Array<BillingCheckoutSession>  | undefined ;\n    constructor(base: _ListBillingCheckoutSessions) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'has_more') >= 0) {\n            this.has_more = base.has_more;\n        }\n        if (Object.keys(base).findIndex(key => key === 'data') >= 0) {\n            if (base.data) {\n                this.data = base.data.map((original) => newBillingCheckoutSessionImpl(original));\n            } else {\n                this.data = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.data !== undefined) {\n            for (const item of this.data) {\n                if (item !== undefined && (item as BillingCheckoutSessionImpl)._remove_builtin_extensions !== undefined) {\n                    (item as BillingCheckoutSessionImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListBillingCheckoutSessionsImpl(base: _ListBillingCheckoutSessions): ListBillingCheckoutSessionsImpl {\n    return new ListBillingCheckoutSessionsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _BillingOrgSubscription, BillingOrgSubscription, BillingOrgSubscriptionImpl, newBillingOrgSubscriptionImpl } from './billingOrgSubscription';\n\n\n/**\n * Response object for billing org subscriptions query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListBillingOrgSubscriptionsResponse { \n    /**\n     * List of billing org subscriptions\n     */\n    billing_subscriptions?: Array<BillingOrgSubscription>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n    /**\n     * The next page to fetch when searching backwards. If an empty string, the current page is the first page. \n     */\n    previous_id?: string;\n}\n\nexport interface ListBillingOrgSubscriptionsResponse extends _ListBillingOrgSubscriptionsResponse {\n    _builtin_original?: _ListBillingOrgSubscriptionsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListBillingOrgSubscriptionsResponseImpl  implements _ListBillingOrgSubscriptionsResponse {\n    _builtin_original?: _ListBillingOrgSubscriptionsResponse = undefined;\n    public billing_subscriptions: Array<BillingOrgSubscription>  | undefined ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    public previous_id: string  | undefined ;\n    constructor(base: _ListBillingOrgSubscriptionsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'billing_subscriptions') >= 0) {\n            if (base.billing_subscriptions) {\n                this.billing_subscriptions = base.billing_subscriptions.map((original) => newBillingOrgSubscriptionImpl(original));\n            } else {\n                this.billing_subscriptions = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'previous_id') >= 0) {\n            this.previous_id = base.previous_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.billing_subscriptions !== undefined) {\n            for (const item of this.billing_subscriptions) {\n                if (item !== undefined && (item as BillingOrgSubscriptionImpl)._remove_builtin_extensions !== undefined) {\n                    (item as BillingOrgSubscriptionImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListBillingOrgSubscriptionsResponseImpl(base: _ListBillingOrgSubscriptionsResponse): ListBillingOrgSubscriptionsResponseImpl {\n    return new ListBillingOrgSubscriptionsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _BillingUsageSummary, BillingUsageSummary, BillingUsageSummaryImpl, newBillingUsageSummaryImpl } from './billingUsageSummary';\n\n\n/**\n * Response object for billing usage records query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListBillingUsageRecordsResponse { \n    /**\n     * List of billing usage summaries.\n     */\n    usage_records?: Array<BillingUsageSummary>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListBillingUsageRecordsResponse extends _ListBillingUsageRecordsResponse {\n    _builtin_original?: _ListBillingUsageRecordsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListBillingUsageRecordsResponseImpl  implements _ListBillingUsageRecordsResponse {\n    _builtin_original?: _ListBillingUsageRecordsResponse = undefined;\n    public usage_records: Array<BillingUsageSummary>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListBillingUsageRecordsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'usage_records') >= 0) {\n            if (base.usage_records) {\n                this.usage_records = base.usage_records.map((original) => newBillingUsageSummaryImpl(original));\n            } else {\n                this.usage_records = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.usage_records !== undefined) {\n            for (const item of this.usage_records) {\n                if (item !== undefined && (item as BillingUsageSummaryImpl)._remove_builtin_extensions !== undefined) {\n                    (item as BillingUsageSummaryImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListBillingUsageRecordsResponseImpl(base: _ListBillingUsageRecordsResponse): ListBillingUsageRecordsResponseImpl {\n    return new ListBillingUsageRecordsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _CatalogueEntry, CatalogueEntry, CatalogueEntryImpl, newCatalogueEntryImpl } from './catalogueEntry';\n\n\n/**\n * Response object for a list of catalogue entries\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListCatalogueEntriesResponse { \n    /**\n     * List of catalogue entries\n     */\n    readonly catalogue_entries?: Array<CatalogueEntry>;\n    /**\n     * Limit the number of catalogue entries included in the response\n     */\n    limit: number;\n}\n\nexport interface ListCatalogueEntriesResponse extends _ListCatalogueEntriesResponse {\n    _builtin_original?: _ListCatalogueEntriesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListCatalogueEntriesResponseImpl  implements _ListCatalogueEntriesResponse {\n    _builtin_original?: _ListCatalogueEntriesResponse = undefined;\n    public readonly catalogue_entries: Array<CatalogueEntry>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListCatalogueEntriesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'catalogue_entries') >= 0) {\n            if (base.catalogue_entries) {\n                this.catalogue_entries = base.catalogue_entries.map((original) => newCatalogueEntryImpl(original));\n            } else {\n                this.catalogue_entries = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.catalogue_entries !== undefined) {\n            for (const item of this.catalogue_entries) {\n                if (item !== undefined && (item as CatalogueEntryImpl)._remove_builtin_extensions !== undefined) {\n                    (item as CatalogueEntryImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListCatalogueEntriesResponseImpl(base: _ListCatalogueEntriesResponse): ListCatalogueEntriesResponseImpl {\n    return new ListCatalogueEntriesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Catalogue, Catalogue, CatalogueImpl, newCatalogueImpl } from './catalogue';\n\n\n/**\n * Response object for a list of catalogues\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListCataloguesResponse { \n    /**\n     * List of catalogues\n     */\n    readonly catalogues?: Array<Catalogue>;\n    /**\n     * Limit the number of catalogues included in the response\n     */\n    limit: number;\n}\n\nexport interface ListCataloguesResponse extends _ListCataloguesResponse {\n    _builtin_original?: _ListCataloguesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListCataloguesResponseImpl  implements _ListCataloguesResponse {\n    _builtin_original?: _ListCataloguesResponse = undefined;\n    public readonly catalogues: Array<Catalogue>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListCataloguesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'catalogues') >= 0) {\n            if (base.catalogues) {\n                this.catalogues = base.catalogues.map((original) => newCatalogueImpl(original));\n            } else {\n                this.catalogues = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.catalogues !== undefined) {\n            for (const item of this.catalogues) {\n                if (item !== undefined && (item as CatalogueImpl)._remove_builtin_extensions !== undefined) {\n                    (item as CatalogueImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListCataloguesResponseImpl(base: _ListCataloguesResponse): ListCataloguesResponseImpl {\n    return new ListCataloguesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _CertSigningReq, CertSigningReq, CertSigningReqImpl, newCertSigningReqImpl } from './certSigningReq';\n\n\n/**\n * Response object for CertSigningReq list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListCertSigningReqResponse { \n    /**\n     * List of CertSigningReq\n     */\n    certificate_signing_requests: Array<CertSigningReq>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListCertSigningReqResponse extends _ListCertSigningReqResponse {\n    _builtin_original?: _ListCertSigningReqResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListCertSigningReqResponseImpl  implements _ListCertSigningReqResponse {\n    _builtin_original?: _ListCertSigningReqResponse = undefined;\n    public certificate_signing_requests: Array<CertSigningReq> ;\n    public limit: number ;\n    constructor(base: _ListCertSigningReqResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'certificate_signing_requests') >= 0) {\n            if (base.certificate_signing_requests) {\n                this.certificate_signing_requests = base.certificate_signing_requests.map((original) => newCertSigningReqImpl(original));\n            } else {\n                this.certificate_signing_requests = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.certificate_signing_requests !== undefined) {\n            for (const item of this.certificate_signing_requests) {\n                if (item !== undefined && (item as CertSigningReqImpl)._remove_builtin_extensions !== undefined) {\n                    (item as CertSigningReqImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListCertSigningReqResponseImpl(base: _ListCertSigningReqResponse): ListCertSigningReqResponseImpl {\n    return new ListCertSigningReqResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _CertificateTracker, CertificateTracker, CertificateTrackerImpl, newCertificateTrackerImpl } from './certificateTracker';\n\n\n/**\n * Response object for CertificateTracker list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListCertificateTrackerResponse { \n    /**\n     * List of CertificateTracker\n     */\n    certificate_trackers: Array<CertificateTracker>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n}\n\nexport interface ListCertificateTrackerResponse extends _ListCertificateTrackerResponse {\n    _builtin_original?: _ListCertificateTrackerResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListCertificateTrackerResponseImpl  implements _ListCertificateTrackerResponse {\n    _builtin_original?: _ListCertificateTrackerResponse = undefined;\n    public certificate_trackers: Array<CertificateTracker> ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _ListCertificateTrackerResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'certificate_trackers') >= 0) {\n            if (base.certificate_trackers) {\n                this.certificate_trackers = base.certificate_trackers.map((original) => newCertificateTrackerImpl(original));\n            } else {\n                this.certificate_trackers = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.certificate_trackers !== undefined) {\n            for (const item of this.certificate_trackers) {\n                if (item !== undefined && (item as CertificateTrackerImpl)._remove_builtin_extensions !== undefined) {\n                    (item as CertificateTrackerImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListCertificateTrackerResponseImpl(base: _ListCertificateTrackerResponse): ListCertificateTrackerResponseImpl {\n    return new ListCertificateTrackerResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Cluster, Cluster, ClusterImpl, newClusterImpl } from './cluster';\n\n\n/**\n * Response object for listing Clusters\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListClusterResponse { \n    /**\n     * The list of matching Clusters\n     */\n    clusters: Array<Cluster>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The name to request in the pagination query to get the next page.\n     */\n    page_at_name?: string;\n}\n\nexport interface ListClusterResponse extends _ListClusterResponse {\n    _builtin_original?: _ListClusterResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListClusterResponseImpl  implements _ListClusterResponse {\n    _builtin_original?: _ListClusterResponse = undefined;\n    public clusters: Array<Cluster> ;\n    public limit: number ;\n    public page_at_name: string  | undefined ;\n    constructor(base: _ListClusterResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'clusters') >= 0) {\n            if (base.clusters) {\n                this.clusters = base.clusters.map((original) => newClusterImpl(original));\n            } else {\n                this.clusters = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_name') >= 0) {\n            this.page_at_name = base.page_at_name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.clusters !== undefined) {\n            for (const item of this.clusters) {\n                if (item !== undefined && (item as ClusterImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ClusterImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListClusterResponseImpl(base: _ListClusterResponse): ListClusterResponseImpl {\n    return new ListClusterResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _CombinedResourceRules, CombinedResourceRules, CombinedResourceRulesImpl, newCombinedResourceRulesImpl } from './combinedResourceRules';\n\n\n/**\n * The response object for listing combined rules. This will containe the list of rules corresponding to the query, combined based on related fields. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListCombinedResourceRulesResponse { \n    /**\n     * The maximum number of CombinedResourceRules that could be returned in the response. \n     */\n    limit: number;\n    /**\n     * The combined rules matching the search criteria\n     */\n    combined_resource_rules?: Array<CombinedResourceRules>;\n}\n\nexport interface ListCombinedResourceRulesResponse extends _ListCombinedResourceRulesResponse {\n    _builtin_original?: _ListCombinedResourceRulesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListCombinedResourceRulesResponseImpl  implements _ListCombinedResourceRulesResponse {\n    _builtin_original?: _ListCombinedResourceRulesResponse = undefined;\n    public limit: number ;\n    public combined_resource_rules: Array<CombinedResourceRules>  | undefined ;\n    constructor(base: _ListCombinedResourceRulesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'combined_resource_rules') >= 0) {\n            if (base.combined_resource_rules) {\n                this.combined_resource_rules = base.combined_resource_rules.map((original) => newCombinedResourceRulesImpl(original));\n            } else {\n                this.combined_resource_rules = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.combined_resource_rules !== undefined) {\n            for (const item of this.combined_resource_rules) {\n                if (item !== undefined && (item as CombinedResourceRulesImpl)._remove_builtin_extensions !== undefined) {\n                    (item as CombinedResourceRulesImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListCombinedResourceRulesResponseImpl(base: _ListCombinedResourceRulesResponse): ListCombinedResourceRulesResponseImpl {\n    return new ListCombinedResourceRulesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _CombinedRules, CombinedRules, CombinedRulesImpl, newCombinedRulesImpl } from './combinedRules';\n\n\n/**\n * The response object for listing combined rules. This will containe the list of rules corresponding to the query, combined based on related fields. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListCombinedRulesResponse { \n    /**\n     * The maximum number of CombinedRules that could be returned in the response. \n     */\n    limit: number;\n    /**\n     * The combined rules matching the search criteria\n     */\n    combined_rules?: Array<CombinedRules>;\n}\n\nexport interface ListCombinedRulesResponse extends _ListCombinedRulesResponse {\n    _builtin_original?: _ListCombinedRulesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListCombinedRulesResponseImpl  implements _ListCombinedRulesResponse {\n    _builtin_original?: _ListCombinedRulesResponse = undefined;\n    public limit: number ;\n    public combined_rules: Array<CombinedRules>  | undefined ;\n    constructor(base: _ListCombinedRulesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'combined_rules') >= 0) {\n            if (base.combined_rules) {\n                this.combined_rules = base.combined_rules.map((original) => newCombinedRulesImpl(original));\n            } else {\n                this.combined_rules = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.combined_rules !== undefined) {\n            for (const item of this.combined_rules) {\n                if (item !== undefined && (item as CombinedRulesImpl)._remove_builtin_extensions !== undefined) {\n                    (item as CombinedRulesImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListCombinedRulesResponseImpl(base: _ListCombinedRulesResponse): ListCombinedRulesResponseImpl {\n    return new ListCombinedRulesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _CombinedUserDetail, CombinedUserDetail, CombinedUserDetailImpl, newCombinedUserDetailImpl } from './combinedUserDetail';\n\n\n/**\n * Response object for user info query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListCombinedUserDetailsResponse { \n    /**\n     * The matching CombinedUserDetail objects.\n     */\n    combined_user_details?: Array<CombinedUserDetail>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The first email on the current page. Can be used with \\\"backwards\\\" as the search_direction_query parameter to retrieve the previous page\\'s entries. Is an empty string if the current page is the first page. \n     */\n    previous_page_email?: string;\n    /**\n     * The first email on the next page. Can be used with \\\"forwards\\\" as the search_direction_query parameter to retrieve the next page\\'s entries. Is an empty string if the current page is the last page. \n     */\n    next_page_email?: string;\n}\n\nexport interface ListCombinedUserDetailsResponse extends _ListCombinedUserDetailsResponse {\n    _builtin_original?: _ListCombinedUserDetailsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListCombinedUserDetailsResponseImpl  implements _ListCombinedUserDetailsResponse {\n    _builtin_original?: _ListCombinedUserDetailsResponse = undefined;\n    public combined_user_details: Array<CombinedUserDetail>  | undefined ;\n    public limit: number ;\n    public previous_page_email: string  | undefined ;\n    public next_page_email: string  | undefined ;\n    constructor(base: _ListCombinedUserDetailsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'combined_user_details') >= 0) {\n            if (base.combined_user_details) {\n                this.combined_user_details = base.combined_user_details.map((original) => newCombinedUserDetailImpl(original));\n            } else {\n                this.combined_user_details = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'previous_page_email') >= 0) {\n            this.previous_page_email = base.previous_page_email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'next_page_email') >= 0) {\n            this.next_page_email = base.next_page_email;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.combined_user_details !== undefined) {\n            for (const item of this.combined_user_details) {\n                if (item !== undefined && (item as CombinedUserDetailImpl)._remove_builtin_extensions !== undefined) {\n                    (item as CombinedUserDetailImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListCombinedUserDetailsResponseImpl(base: _ListCombinedUserDetailsResponse): ListCombinedUserDetailsResponseImpl {\n    return new ListCombinedUserDetailsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _EnvironmentConfig, EnvironmentConfig, EnvironmentConfigImpl, newEnvironmentConfigImpl } from './environmentConfig';\n\n\n/**\n * Response object for config list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListConfigsResponse { \n    /**\n     * List of configs\n     */\n    configs?: Array<EnvironmentConfig>;\n}\n\nexport interface ListConfigsResponse extends _ListConfigsResponse {\n    _builtin_original?: _ListConfigsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListConfigsResponseImpl  implements _ListConfigsResponse {\n    _builtin_original?: _ListConfigsResponse = undefined;\n    public configs: Array<EnvironmentConfig>  | undefined ;\n    constructor(base: _ListConfigsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'configs') >= 0) {\n            if (base.configs) {\n                this.configs = base.configs.map((original) => newEnvironmentConfigImpl(original));\n            } else {\n                this.configs = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.configs !== undefined) {\n            for (const item of this.configs) {\n                if (item !== undefined && (item as EnvironmentConfigImpl)._remove_builtin_extensions !== undefined) {\n                    (item as EnvironmentConfigImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListConfigsResponseImpl(base: _ListConfigsResponse): ListConfigsResponseImpl {\n    return new ListConfigsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Connector, Connector, ConnectorImpl, newConnectorImpl } from './connector';\nimport { _PageInfo, PageInfo, PageInfoImpl, newPageInfoImpl } from './pageInfo';\n\n\n/**\n * Response object for connector list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListConnectorResponse { \n    /**\n     * List of connectors\n     */\n    connectors: Array<Connector>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n    /**\n     * The name to request in the pagination query to get the next page.\n     */\n    page_at_name?: string;\n    page_info?: PageInfo;\n}\n\nexport interface ListConnectorResponse extends _ListConnectorResponse {\n    _builtin_original?: _ListConnectorResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListConnectorResponseImpl  implements _ListConnectorResponse {\n    _builtin_original?: _ListConnectorResponse = undefined;\n    public connectors: Array<Connector> ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    public page_at_name: string  | undefined ;\n    public page_info: PageInfo  | undefined ;\n    constructor(base: _ListConnectorResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'connectors') >= 0) {\n            if (base.connectors) {\n                this.connectors = base.connectors.map((original) => newConnectorImpl(original));\n            } else {\n                this.connectors = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_name') >= 0) {\n            this.page_at_name = base.page_at_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_info') >= 0) {\n            this.page_info = base.page_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.connectors !== undefined) {\n            for (const item of this.connectors) {\n                if (item !== undefined && (item as ConnectorImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ConnectorImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListConnectorResponseImpl(base: _ListConnectorResponse): ListConnectorResponseImpl {\n    return new ListConnectorResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ConnectorSecureTransfer, ConnectorSecureTransfer, ConnectorSecureTransferImpl, newConnectorSecureTransferImpl } from './connectorSecureTransfer';\n\n\n/**\n * Response object for connector secure copy list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListConnectorSecureTransferResponse { \n    /**\n     * List of ConnectorSecureTransfer\n     */\n    connector_transfers: Array<ConnectorSecureTransfer>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n}\n\nexport interface ListConnectorSecureTransferResponse extends _ListConnectorSecureTransferResponse {\n    _builtin_original?: _ListConnectorSecureTransferResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListConnectorSecureTransferResponseImpl  implements _ListConnectorSecureTransferResponse {\n    _builtin_original?: _ListConnectorSecureTransferResponse = undefined;\n    public connector_transfers: Array<ConnectorSecureTransfer> ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _ListConnectorSecureTransferResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'connector_transfers') >= 0) {\n            if (base.connector_transfers) {\n                this.connector_transfers = base.connector_transfers.map((original) => newConnectorSecureTransferImpl(original));\n            } else {\n                this.connector_transfers = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.connector_transfers !== undefined) {\n            for (const item of this.connector_transfers) {\n                if (item !== undefined && (item as ConnectorSecureTransferImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ConnectorSecureTransferImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListConnectorSecureTransferResponseImpl(base: _ListConnectorSecureTransferResponse): ListConnectorSecureTransferResponseImpl {\n    return new ListConnectorSecureTransferResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ConnectorService, ConnectorService, ConnectorServiceImpl, newConnectorServiceImpl } from './connectorService';\n\n\n/**\n * Response object for listing ConnectorService\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListConnectorServiceResponse { \n    /**\n     * List of ConnectorService\n     */\n    services: Array<ConnectorService>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListConnectorServiceResponse extends _ListConnectorServiceResponse {\n    _builtin_original?: _ListConnectorServiceResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListConnectorServiceResponseImpl  implements _ListConnectorServiceResponse {\n    _builtin_original?: _ListConnectorServiceResponse = undefined;\n    public services: Array<ConnectorService> ;\n    public limit: number ;\n    constructor(base: _ListConnectorServiceResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'services') >= 0) {\n            if (base.services) {\n                this.services = base.services.map((original) => newConnectorServiceImpl(original));\n            } else {\n                this.services = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.services !== undefined) {\n            for (const item of this.services) {\n                if (item !== undefined && (item as ConnectorServiceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ConnectorServiceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListConnectorServiceResponseImpl(base: _ListConnectorServiceResponse): ListConnectorServiceResponseImpl {\n    return new ListConnectorServiceResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ConnectorStaticStats, ConnectorStaticStats, ConnectorStaticStatsImpl, newConnectorStaticStatsImpl } from './connectorStaticStats';\nimport { _AgentConnectorDynamicStats, AgentConnectorDynamicStats, AgentConnectorDynamicStatsImpl, newAgentConnectorDynamicStatsImpl } from './agentConnectorDynamicStats';\n\n\n/**\n * The result of querying for many connectors\\' stats. This will hold an item for each matching connector\\'s stats. Note that if a connector does not exist, or its states were not up to date, it will not have an entry in the corresponding array. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListConnectorStatsResponse { \n    dynamic_stats?: Array<AgentConnectorDynamicStats>;\n    static_stats?: Array<ConnectorStaticStats>;\n}\n\nexport interface ListConnectorStatsResponse extends _ListConnectorStatsResponse {\n    _builtin_original?: _ListConnectorStatsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListConnectorStatsResponseImpl  implements _ListConnectorStatsResponse {\n    _builtin_original?: _ListConnectorStatsResponse = undefined;\n    public dynamic_stats: Array<AgentConnectorDynamicStats>  | undefined ;\n    public static_stats: Array<ConnectorStaticStats>  | undefined ;\n    constructor(base: _ListConnectorStatsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'dynamic_stats') >= 0) {\n            if (base.dynamic_stats) {\n                this.dynamic_stats = base.dynamic_stats.map((original) => newAgentConnectorDynamicStatsImpl(original));\n            } else {\n                this.dynamic_stats = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'static_stats') >= 0) {\n            if (base.static_stats) {\n                this.static_stats = base.static_stats.map((original) => newConnectorStaticStatsImpl(original));\n            } else {\n                this.static_stats = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.dynamic_stats !== undefined) {\n            for (const item of this.dynamic_stats) {\n                if (item !== undefined && (item as AgentConnectorDynamicStatsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as AgentConnectorDynamicStatsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.static_stats !== undefined) {\n            for (const item of this.static_stats) {\n                if (item !== undefined && (item as ConnectorStaticStatsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ConnectorStaticStatsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListConnectorStatsResponseImpl(base: _ListConnectorStatsResponse): ListConnectorStatsResponseImpl {\n    return new ListConnectorStatsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PageInfo, PageInfo, PageInfoImpl, newPageInfoImpl } from './pageInfo';\nimport { _DatabaseResource, DatabaseResource, DatabaseResourceImpl, newDatabaseResourceImpl } from './databaseResource';\n\n\n/**\n * Response object for listing DatabaseResource objects.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListDatabaseResourcesResponse { \n    /**\n     * List of DatabaseResource objects.\n     */\n    database_resources?: Array<DatabaseResource>;\n    /**\n     * The maximum number of records returned in the response.\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n    page_info?: PageInfo;\n}\n\nexport interface ListDatabaseResourcesResponse extends _ListDatabaseResourcesResponse {\n    _builtin_original?: _ListDatabaseResourcesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListDatabaseResourcesResponseImpl  implements _ListDatabaseResourcesResponse {\n    _builtin_original?: _ListDatabaseResourcesResponse = undefined;\n    public database_resources: Array<DatabaseResource>  | undefined ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    public page_info: PageInfo  | undefined ;\n    constructor(base: _ListDatabaseResourcesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'database_resources') >= 0) {\n            if (base.database_resources) {\n                this.database_resources = base.database_resources.map((original) => newDatabaseResourceImpl(original));\n            } else {\n                this.database_resources = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_info') >= 0) {\n            this.page_info = base.page_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.database_resources !== undefined) {\n            for (const item of this.database_resources) {\n                if (item !== undefined && (item as DatabaseResourceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as DatabaseResourceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListDatabaseResourcesResponseImpl(base: _ListDatabaseResourcesResponse): ListDatabaseResourcesResponseImpl {\n    return new ListDatabaseResourcesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _DeploymentInstance, DeploymentInstance, DeploymentInstanceImpl, newDeploymentInstanceImpl } from './deploymentInstance';\n\n\n/**\n * Response object for listing Deployement instances\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListDeploymentInstances { \n    /**\n     * List of Deployment objects\n     */\n    deployment_instances: Array<DeploymentInstance>;\n    /**\n     * The maximum number of records returned in the response.\n     */\n    limit: number;\n}\n\nexport interface ListDeploymentInstances extends _ListDeploymentInstances {\n    _builtin_original?: _ListDeploymentInstances;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListDeploymentInstancesImpl  implements _ListDeploymentInstances {\n    _builtin_original?: _ListDeploymentInstances = undefined;\n    public deployment_instances: Array<DeploymentInstance> ;\n    public limit: number ;\n    constructor(base: _ListDeploymentInstances) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'deployment_instances') >= 0) {\n            if (base.deployment_instances) {\n                this.deployment_instances = base.deployment_instances.map((original) => newDeploymentInstanceImpl(original));\n            } else {\n                this.deployment_instances = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.deployment_instances !== undefined) {\n            for (const item of this.deployment_instances) {\n                if (item !== undefined && (item as DeploymentInstanceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as DeploymentInstanceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListDeploymentInstancesImpl(base: _ListDeploymentInstances): ListDeploymentInstancesImpl {\n    return new ListDeploymentInstancesImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _DeploymentTemplate, DeploymentTemplate, DeploymentTemplateImpl, newDeploymentTemplateImpl } from './deploymentTemplate';\n\n\n/**\n * Response object for listing Deployment Templates\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListDeploymentTemplates { \n    /**\n     * List of Deployment objects\n     */\n    deployment_templates: Array<DeploymentTemplate>;\n    /**\n     * The maximum number of records returned in the response.\n     */\n    limit: number;\n}\n\nexport interface ListDeploymentTemplates extends _ListDeploymentTemplates {\n    _builtin_original?: _ListDeploymentTemplates;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListDeploymentTemplatesImpl  implements _ListDeploymentTemplates {\n    _builtin_original?: _ListDeploymentTemplates = undefined;\n    public deployment_templates: Array<DeploymentTemplate> ;\n    public limit: number ;\n    constructor(base: _ListDeploymentTemplates) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'deployment_templates') >= 0) {\n            if (base.deployment_templates) {\n                this.deployment_templates = base.deployment_templates.map((original) => newDeploymentTemplateImpl(original));\n            } else {\n                this.deployment_templates = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.deployment_templates !== undefined) {\n            for (const item of this.deployment_templates) {\n                if (item !== undefined && (item as DeploymentTemplateImpl)._remove_builtin_extensions !== undefined) {\n                    (item as DeploymentTemplateImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListDeploymentTemplatesImpl(base: _ListDeploymentTemplates): ListDeploymentTemplatesImpl {\n    return new ListDeploymentTemplatesImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Deployment, Deployment, DeploymentImpl, newDeploymentImpl } from './deployment';\n\n\n/**\n * Response object for listing Deployements\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListDeployments { \n    /**\n     * List of Deployment objects\n     */\n    deployments: Array<Deployment>;\n    /**\n     * The maximum number of records returned in the response.\n     */\n    limit: number;\n}\n\nexport interface ListDeployments extends _ListDeployments {\n    _builtin_original?: _ListDeployments;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListDeploymentsImpl  implements _ListDeployments {\n    _builtin_original?: _ListDeployments = undefined;\n    public deployments: Array<Deployment> ;\n    public limit: number ;\n    constructor(base: _ListDeployments) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'deployments') >= 0) {\n            if (base.deployments) {\n                this.deployments = base.deployments.map((original) => newDeploymentImpl(original));\n            } else {\n                this.deployments = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.deployments !== undefined) {\n            for (const item of this.deployments) {\n                if (item !== undefined && (item as DeploymentImpl)._remove_builtin_extensions !== undefined) {\n                    (item as DeploymentImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListDeploymentsImpl(base: _ListDeployments): ListDeploymentsImpl {\n    return new ListDeploymentsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PageInfo, PageInfo, PageInfoImpl, newPageInfoImpl } from './pageInfo';\nimport { _DesktopResource, DesktopResource, DesktopResourceImpl, newDesktopResourceImpl } from './desktopResource';\n\n\n/**\n * Response object for listing DesktopResource objects.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListDesktopResourcesResponse { \n    /**\n     * List of DesktopResource objects.\n     */\n    desktop_resources?: Array<DesktopResource>;\n    /**\n     * The maximum number of records returned in the response.\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n    page_info?: PageInfo;\n}\n\nexport interface ListDesktopResourcesResponse extends _ListDesktopResourcesResponse {\n    _builtin_original?: _ListDesktopResourcesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListDesktopResourcesResponseImpl  implements _ListDesktopResourcesResponse {\n    _builtin_original?: _ListDesktopResourcesResponse = undefined;\n    public desktop_resources: Array<DesktopResource>  | undefined ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    public page_info: PageInfo  | undefined ;\n    constructor(base: _ListDesktopResourcesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'desktop_resources') >= 0) {\n            if (base.desktop_resources) {\n                this.desktop_resources = base.desktop_resources.map((original) => newDesktopResourceImpl(original));\n            } else {\n                this.desktop_resources = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_info') >= 0) {\n            this.page_info = base.page_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.desktop_resources !== undefined) {\n            for (const item of this.desktop_resources) {\n                if (item !== undefined && (item as DesktopResourceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as DesktopResourceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListDesktopResourcesResponseImpl(base: _ListDesktopResourcesResponse): ListDesktopResourcesResponseImpl {\n    return new ListDesktopResourcesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A response object for querying domains\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListDomainsResponse { \n    /**\n     * List all email domains in an organisation\n     */\n    domains?: Array<string>;\n}\n\nexport interface ListDomainsResponse extends _ListDomainsResponse {\n    _builtin_original?: _ListDomainsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListDomainsResponseImpl  implements _ListDomainsResponse {\n    _builtin_original?: _ListDomainsResponse = undefined;\n    public domains: Array<string>  | undefined ;\n    constructor(base: _ListDomainsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'domains') >= 0) {\n            this.domains = base.domains;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newListDomainsResponseImpl(base: _ListDomainsResponse): ListDomainsResponseImpl {\n    return new ListDomainsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The roles for a user\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserRoles { \n    /**\n     * Unique identifier\n     */\n    user_id?: string;\n    /**\n     * An associative array mapping an application to a list of roles\n     */\n    roles?: { [key: string]: Array<string> | undefined; };\n}\n\nexport interface UserRoles extends _UserRoles {\n    _builtin_original?: _UserRoles;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserRolesImpl  implements _UserRoles {\n    _builtin_original?: _UserRoles = undefined;\n    public user_id: string  | undefined ;\n    public roles: { [key: string]: Array<string> | undefined; }  | undefined ;\n    constructor(base: _UserRoles) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'roles') >= 0) {\n            this.roles = base.roles;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUserRolesImpl(base: _UserRoles): UserRolesImpl {\n    return new UserRolesImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserRoles, UserRoles, UserRolesImpl, newUserRolesImpl } from './userRoles';\n\n\n/**\n * Respose object for a elevated user roles query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListElevatedUserRoles { \n    /**\n     * List of elevated user roles\n     */\n    elevated_permissions?: Array<UserRoles>;\n    /**\n     * Limit the number of responses\n     */\n    limit: number;\n}\n\nexport interface ListElevatedUserRoles extends _ListElevatedUserRoles {\n    _builtin_original?: _ListElevatedUserRoles;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListElevatedUserRolesImpl  implements _ListElevatedUserRoles {\n    _builtin_original?: _ListElevatedUserRoles = undefined;\n    public elevated_permissions: Array<UserRoles>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListElevatedUserRoles) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'elevated_permissions') >= 0) {\n            if (base.elevated_permissions) {\n                this.elevated_permissions = base.elevated_permissions.map((original) => newUserRolesImpl(original));\n            } else {\n                this.elevated_permissions = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.elevated_permissions !== undefined) {\n            for (const item of this.elevated_permissions) {\n                if (item !== undefined && (item as UserRolesImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserRolesImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListElevatedUserRolesImpl(base: _ListElevatedUserRoles): ListElevatedUserRolesImpl {\n    return new ListElevatedUserRolesImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _EnvironmentConfig, EnvironmentConfig, EnvironmentConfigImpl, newEnvironmentConfigImpl } from './environmentConfig';\n\n\n/**\n * Response object for environment config list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListEnvironmentConfigsResponse { \n    /**\n     * List of environment configs\n     */\n    environment_configs?: Array<EnvironmentConfig>;\n    /**\n     * The maximum number of Environment Configs to return in the response. \n     */\n    limit: number;\n}\n\nexport interface ListEnvironmentConfigsResponse extends _ListEnvironmentConfigsResponse {\n    _builtin_original?: _ListEnvironmentConfigsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListEnvironmentConfigsResponseImpl  implements _ListEnvironmentConfigsResponse {\n    _builtin_original?: _ListEnvironmentConfigsResponse = undefined;\n    public environment_configs: Array<EnvironmentConfig>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListEnvironmentConfigsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'environment_configs') >= 0) {\n            if (base.environment_configs) {\n                this.environment_configs = base.environment_configs.map((original) => newEnvironmentConfigImpl(original));\n            } else {\n                this.environment_configs = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.environment_configs !== undefined) {\n            for (const item of this.environment_configs) {\n                if (item !== undefined && (item as EnvironmentConfigImpl)._remove_builtin_extensions !== undefined) {\n                    (item as EnvironmentConfigImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListEnvironmentConfigsResponseImpl(base: _ListEnvironmentConfigsResponse): ListEnvironmentConfigsResponseImpl {\n    return new ListEnvironmentConfigsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _FeatureTag, FeatureTag, FeatureTagImpl, newFeatureTagImpl } from './featureTag';\n\n\n/**\n * Response object for listing feature tags\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListFeatureTagsResponse { \n    /**\n     * The list of matching feature tags\n     */\n    feature_tags: Array<FeatureTag>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The name to request in the pagination query to get the next page.\n     */\n    page_at_name?: string;\n}\n\nexport interface ListFeatureTagsResponse extends _ListFeatureTagsResponse {\n    _builtin_original?: _ListFeatureTagsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListFeatureTagsResponseImpl  implements _ListFeatureTagsResponse {\n    _builtin_original?: _ListFeatureTagsResponse = undefined;\n    public feature_tags: Array<FeatureTag> ;\n    public limit: number ;\n    public page_at_name: string  | undefined ;\n    constructor(base: _ListFeatureTagsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'feature_tags') >= 0) {\n            if (base.feature_tags) {\n                this.feature_tags = base.feature_tags.map((original) => newFeatureTagImpl(original));\n            } else {\n                this.feature_tags = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_name') >= 0) {\n            this.page_at_name = base.page_at_name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.feature_tags !== undefined) {\n            for (const item of this.feature_tags) {\n                if (item !== undefined && (item as FeatureTagImpl)._remove_builtin_extensions !== undefined) {\n                    (item as FeatureTagImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListFeatureTagsResponseImpl(base: _ListFeatureTagsResponse): ListFeatureTagsResponseImpl {\n    return new ListFeatureTagsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Feature, Feature, FeatureImpl, newFeatureImpl } from './feature';\n\n\n/**\n * Response object for features query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListFeaturesResponse { \n    /**\n     * List of features.\n     */\n    features?: Array<Feature>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit?: number;\n}\n\nexport interface ListFeaturesResponse extends _ListFeaturesResponse {\n    _builtin_original?: _ListFeaturesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListFeaturesResponseImpl  implements _ListFeaturesResponse {\n    _builtin_original?: _ListFeaturesResponse = undefined;\n    public features: Array<Feature>  | undefined ;\n    public limit: number  | undefined ;\n    constructor(base: _ListFeaturesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'features') >= 0) {\n            if (base.features) {\n                this.features = base.features.map((original) => newFeatureImpl(original));\n            } else {\n                this.features = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.features !== undefined) {\n            for (const item of this.features) {\n                if (item !== undefined && (item as FeatureImpl)._remove_builtin_extensions !== undefined) {\n                    (item as FeatureImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListFeaturesResponseImpl(base: _ListFeaturesResponse): ListFeaturesResponseImpl {\n    return new ListFeaturesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _FileAssociation, FileAssociation, FileAssociationImpl, newFileAssociationImpl } from './fileAssociation';\n\n\n/**\n * The matching file associations \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListFileAssociationsResponse { \n    /**\n     * Matching associations\n     */\n    file_associations: Array<FileAssociation>;\n    /**\n     * Limit of entries in response\n     */\n    limit: number;\n}\n\nexport interface ListFileAssociationsResponse extends _ListFileAssociationsResponse {\n    _builtin_original?: _ListFileAssociationsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListFileAssociationsResponseImpl  implements _ListFileAssociationsResponse {\n    _builtin_original?: _ListFileAssociationsResponse = undefined;\n    public file_associations: Array<FileAssociation> ;\n    public limit: number ;\n    constructor(base: _ListFileAssociationsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'file_associations') >= 0) {\n            if (base.file_associations) {\n                this.file_associations = base.file_associations.map((original) => newFileAssociationImpl(original));\n            } else {\n                this.file_associations = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.file_associations !== undefined) {\n            for (const item of this.file_associations) {\n                if (item !== undefined && (item as FileAssociationImpl)._remove_builtin_extensions !== undefined) {\n                    (item as FileAssociationImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListFileAssociationsResponseImpl(base: _ListFileAssociationsResponse): ListFileAssociationsResponseImpl {\n    return new ListFileAssociationsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PageInfo, PageInfo, PageInfoImpl, newPageInfoImpl } from './pageInfo';\nimport { _FileShareService, FileShareService, FileShareServiceImpl, newFileShareServiceImpl } from './fileShareService';\n\n\n/**\n * Response object for listing FileShareServices\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListFileShareServicesResponse { \n    /**\n     * List of FileShareServices\n     */\n    file_share_services?: Array<FileShareService>;\n    /**\n     * The maximum number of records returned in the response.\n     */\n    limit: number;\n    page_info?: PageInfo;\n}\n\nexport interface ListFileShareServicesResponse extends _ListFileShareServicesResponse {\n    _builtin_original?: _ListFileShareServicesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListFileShareServicesResponseImpl  implements _ListFileShareServicesResponse {\n    _builtin_original?: _ListFileShareServicesResponse = undefined;\n    public file_share_services: Array<FileShareService>  | undefined ;\n    public limit: number ;\n    public page_info: PageInfo  | undefined ;\n    constructor(base: _ListFileShareServicesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'file_share_services') >= 0) {\n            if (base.file_share_services) {\n                this.file_share_services = base.file_share_services.map((original) => newFileShareServiceImpl(original));\n            } else {\n                this.file_share_services = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_info') >= 0) {\n            this.page_info = base.page_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.file_share_services !== undefined) {\n            for (const item of this.file_share_services) {\n                if (item !== undefined && (item as FileShareServiceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as FileShareServiceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListFileShareServicesResponseImpl(base: _ListFileShareServicesResponse): ListFileShareServicesResponseImpl {\n    return new ListFileShareServicesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _FileTemplate, FileTemplate, FileTemplateImpl, newFileTemplateImpl } from './fileTemplate';\n\n\n/**\n * Response object for file templates list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListFileTemplatesResponse { \n    /**\n     * List of file templates\n     */\n    file_templates?: Array<FileTemplate>;\n    /**\n     * Limit of file templates in response\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n}\n\nexport interface ListFileTemplatesResponse extends _ListFileTemplatesResponse {\n    _builtin_original?: _ListFileTemplatesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListFileTemplatesResponseImpl  implements _ListFileTemplatesResponse {\n    _builtin_original?: _ListFileTemplatesResponse = undefined;\n    public file_templates: Array<FileTemplate>  | undefined ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _ListFileTemplatesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'file_templates') >= 0) {\n            if (base.file_templates) {\n                this.file_templates = base.file_templates.map((original) => newFileTemplateImpl(original));\n            } else {\n                this.file_templates = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.file_templates !== undefined) {\n            for (const item of this.file_templates) {\n                if (item !== undefined && (item as FileTemplateImpl)._remove_builtin_extensions !== undefined) {\n                    (item as FileTemplateImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListFileTemplatesResponseImpl(base: _ListFileTemplatesResponse): ListFileTemplatesResponseImpl {\n    return new ListFileTemplatesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _FileSummary, FileSummary, FileSummaryImpl, newFileSummaryImpl } from './fileSummary';\n\n\n/**\n * Response object for file list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListFilesResponse { \n    /**\n     * List of files\n     */\n    files?: Array<FileSummary>;\n    /**\n     * Limit of files in response\n     */\n    limit: number;\n}\n\nexport interface ListFilesResponse extends _ListFilesResponse {\n    _builtin_original?: _ListFilesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListFilesResponseImpl  implements _ListFilesResponse {\n    _builtin_original?: _ListFilesResponse = undefined;\n    public files: Array<FileSummary>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListFilesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'files') >= 0) {\n            if (base.files) {\n                this.files = base.files.map((original) => newFileSummaryImpl(original));\n            } else {\n                this.files = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.files !== undefined) {\n            for (const item of this.files) {\n                if (item !== undefined && (item as FileSummaryImpl)._remove_builtin_extensions !== undefined) {\n                    (item as FileSummaryImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListFilesResponseImpl(base: _ListFilesResponse): ListFilesResponseImpl {\n    return new ListFilesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Group, Group, GroupImpl, newGroupImpl } from './group';\n\n\n/**\n * Response object for group query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListGroupsResponse { \n    /**\n     * List of groups\n     */\n    groups?: Array<Group>;\n    /**\n     * Limit on the number of groups in the response\n     */\n    limit: number;\n    /**\n     * The first email on the current page. Can be used with \\\"backwards\\\" as the search_direction_query parameter to retrieve the previous page\\'s entries. Is an empty string if the current page is the first page. \n     */\n    previous_page_email?: string;\n    /**\n     * The first email on the next page. Can be used with \\\"forwards\\\" as the search_direction_query parameter to retrieve the next page\\'s entries. Is an empty string if the current page is the last page. \n     */\n    next_page_email?: string;\n}\n\nexport interface ListGroupsResponse extends _ListGroupsResponse {\n    _builtin_original?: _ListGroupsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListGroupsResponseImpl  implements _ListGroupsResponse {\n    _builtin_original?: _ListGroupsResponse = undefined;\n    public groups: Array<Group>  | undefined ;\n    public limit: number ;\n    public previous_page_email: string  | undefined ;\n    public next_page_email: string  | undefined ;\n    constructor(base: _ListGroupsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'groups') >= 0) {\n            if (base.groups) {\n                this.groups = base.groups.map((original) => newGroupImpl(original));\n            } else {\n                this.groups = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'previous_page_email') >= 0) {\n            this.previous_page_email = base.previous_page_email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'next_page_email') >= 0) {\n            this.next_page_email = base.next_page_email;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.groups !== undefined) {\n            for (const item of this.groups) {\n                if (item !== undefined && (item as GroupImpl)._remove_builtin_extensions !== undefined) {\n                    (item as GroupImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListGroupsResponseImpl(base: _ListGroupsResponse): ListGroupsResponseImpl {\n    return new ListGroupsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _GuidMetadata, GuidMetadata, GuidMetadataImpl, newGuidMetadataImpl } from './guidMetadata';\n\n\n/**\n * Response object for GuidMetadata query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListGuidMetadataResponse { \n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The matching GuidMetadata objects\n     */\n    guid_to_name_list: Array<GuidMetadata>;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n}\n\nexport interface ListGuidMetadataResponse extends _ListGuidMetadataResponse {\n    _builtin_original?: _ListGuidMetadataResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListGuidMetadataResponseImpl  implements _ListGuidMetadataResponse {\n    _builtin_original?: _ListGuidMetadataResponse = undefined;\n    public limit: number ;\n    public guid_to_name_list: Array<GuidMetadata> ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _ListGuidMetadataResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'guid_to_name_list') >= 0) {\n            if (base.guid_to_name_list) {\n                this.guid_to_name_list = base.guid_to_name_list.map((original) => newGuidMetadataImpl(original));\n            } else {\n                this.guid_to_name_list = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.guid_to_name_list !== undefined) {\n            for (const item of this.guid_to_name_list) {\n                if (item !== undefined && (item as GuidMetadataImpl)._remove_builtin_extensions !== undefined) {\n                    (item as GuidMetadataImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListGuidMetadataResponseImpl(base: _ListGuidMetadataResponse): ListGuidMetadataResponseImpl {\n    return new ListGuidMetadataResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Host, Host, HostImpl, newHostImpl } from './host';\n\n\n/**\n * Response object for Host list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListHost { \n    /**\n     * List of Hosts\n     */\n    hosts: Array<Host>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListHost extends _ListHost {\n    _builtin_original?: _ListHost;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListHostImpl  implements _ListHost {\n    _builtin_original?: _ListHost = undefined;\n    public hosts: Array<Host> ;\n    public limit: number ;\n    constructor(base: _ListHost) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'hosts') >= 0) {\n            if (base.hosts) {\n                this.hosts = base.hosts.map((original) => newHostImpl(original));\n            } else {\n                this.hosts = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.hosts !== undefined) {\n            for (const item of this.hosts) {\n                if (item !== undefined && (item as HostImpl)._remove_builtin_extensions !== undefined) {\n                    (item as HostImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListHostImpl(base: _ListHost): ListHostImpl {\n    return new ListHostImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _HostBundle, HostBundle, HostBundleImpl, newHostBundleImpl } from './hostBundle';\n\n\n/**\n * Response object for HostBundle list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListHostBundle { \n    /**\n     * List of HostBundle\n     */\n    host_bundles: Array<HostBundle>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListHostBundle extends _ListHostBundle {\n    _builtin_original?: _ListHostBundle;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListHostBundleImpl  implements _ListHostBundle {\n    _builtin_original?: _ListHostBundle = undefined;\n    public host_bundles: Array<HostBundle> ;\n    public limit: number ;\n    constructor(base: _ListHostBundle) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'host_bundles') >= 0) {\n            if (base.host_bundles) {\n                this.host_bundles = base.host_bundles.map((original) => newHostBundleImpl(original));\n            } else {\n                this.host_bundles = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.host_bundles !== undefined) {\n            for (const item of this.host_bundles) {\n                if (item !== undefined && (item as HostBundleImpl)._remove_builtin_extensions !== undefined) {\n                    (item as HostBundleImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListHostBundleImpl(base: _ListHostBundle): ListHostBundleImpl {\n    return new ListHostBundleImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _HostLabel, HostLabel, HostLabelImpl, newHostLabelImpl } from './hostLabel';\n\n\n/**\n * Response object for HostLabel list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListHostLabel { \n    /**\n     * List of HostLabel\n     */\n    host_labels: Array<HostLabel>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListHostLabel extends _ListHostLabel {\n    _builtin_original?: _ListHostLabel;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListHostLabelImpl  implements _ListHostLabel {\n    _builtin_original?: _ListHostLabel = undefined;\n    public host_labels: Array<HostLabel> ;\n    public limit: number ;\n    constructor(base: _ListHostLabel) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'host_labels') >= 0) {\n            if (base.host_labels) {\n                this.host_labels = base.host_labels.map((original) => newHostLabelImpl(original));\n            } else {\n                this.host_labels = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.host_labels !== undefined) {\n            for (const item of this.host_labels) {\n                if (item !== undefined && (item as HostLabelImpl)._remove_builtin_extensions !== undefined) {\n                    (item as HostLabelImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListHostLabelImpl(base: _ListHostLabel): ListHostLabelImpl {\n    return new ListHostLabelImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _HostOrg, HostOrg, HostOrgImpl, newHostOrgImpl } from './hostOrg';\n\n\n/**\n * Response object for HostOrg list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListHostOrg { \n    /**\n     * List of HostOrg\n     */\n    orgs: Array<HostOrg>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListHostOrg extends _ListHostOrg {\n    _builtin_original?: _ListHostOrg;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListHostOrgImpl  implements _ListHostOrg {\n    _builtin_original?: _ListHostOrg = undefined;\n    public orgs: Array<HostOrg> ;\n    public limit: number ;\n    constructor(base: _ListHostOrg) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'orgs') >= 0) {\n            if (base.orgs) {\n                this.orgs = base.orgs.map((original) => newHostOrgImpl(original));\n            } else {\n                this.orgs = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.orgs !== undefined) {\n            for (const item of this.orgs) {\n                if (item !== undefined && (item as HostOrgImpl)._remove_builtin_extensions !== undefined) {\n                    (item as HostOrgImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListHostOrgImpl(base: _ListHostOrg): ListHostOrgImpl {\n    return new ListHostOrgImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ListInboxItemsSummary, ListInboxItemsSummary, ListInboxItemsSummaryImpl, newListInboxItemsSummaryImpl } from './listInboxItemsSummary';\nimport { _InboxItem, InboxItem, InboxItemImpl, newInboxItemImpl } from './inboxItem';\n\n\n/**\n * The result of querying the items in an inbox. To understand how many items there are without retrieving them, pass a limit of 0 to the query. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListInboxItemsResponse { \n    /**\n     * The items corresponding to the query\n     */\n    inbox_items: Array<InboxItem>;\n    summary: ListInboxItemsSummary;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit?: number;\n    /**\n     * The received date in the pagination query to get the next page.\n     */\n    page_at_received_date?: Date;\n    /**\n     * The inbox item id to use in the pagination query to get the next page. Useful in case more than one message was received on the same date. \n     */\n    page_at_id?: string;\n}\n\nexport interface ListInboxItemsResponse extends _ListInboxItemsResponse {\n    _builtin_original?: _ListInboxItemsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListInboxItemsResponseImpl  implements _ListInboxItemsResponse {\n    _builtin_original?: _ListInboxItemsResponse = undefined;\n    public inbox_items: Array<InboxItem> ;\n    public summary: ListInboxItemsSummary ;\n    public limit: number  | undefined ;\n    public page_at_received_date: Date  | undefined ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _ListInboxItemsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'inbox_items') >= 0) {\n            if (base.inbox_items) {\n                this.inbox_items = base.inbox_items.map((original) => newInboxItemImpl(original));\n            } else {\n                this.inbox_items = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'summary') >= 0) {\n            this.summary = base.summary;\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_received_date') >= 0) {\n            this.page_at_received_date = base.page_at_received_date;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.inbox_items !== undefined) {\n            for (const item of this.inbox_items) {\n                if (item !== undefined && (item as InboxItemImpl)._remove_builtin_extensions !== undefined) {\n                    (item as InboxItemImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListInboxItemsResponseImpl(base: _ListInboxItemsResponse): ListInboxItemsResponseImpl {\n    return new ListInboxItemsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An inbox holds messages for a user. These messages track whether they have been read, and can be deleted/marked unread/etc. The inbox query summary describes the state of an inbox when filtered. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListInboxItemsSummary { \n    /**\n     * The number of messages in the inbox.\n     */\n    count_total: number;\n    /**\n     * The number of messages in the inbox which have not been marked as read.\n     */\n    count_unread: number;\n}\n\nexport interface ListInboxItemsSummary extends _ListInboxItemsSummary {\n    _builtin_original?: _ListInboxItemsSummary;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListInboxItemsSummaryImpl  implements _ListInboxItemsSummary {\n    _builtin_original?: _ListInboxItemsSummary = undefined;\n    public count_total: number ;\n    public count_unread: number ;\n    constructor(base: _ListInboxItemsSummary) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'count_total') >= 0) {\n            this.count_total = base.count_total;\n        }\n        if (Object.keys(base).findIndex(key => key === 'count_unread') >= 0) {\n            this.count_unread = base.count_unread;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newListInboxItemsSummaryImpl(base: _ListInboxItemsSummary): ListInboxItemsSummaryImpl {\n    return new ListInboxItemsSummaryImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _IpsecConnector, IpsecConnector, IpsecConnectorImpl, newIpsecConnectorImpl } from './ipsecConnector';\n\n\n/**\n * Response object for an Ipsec Connector list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListIpsecConnectorResponse { \n    /**\n     * List of IPsec connectors\n     */\n    ipsec_connectors: Array<IpsecConnector>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListIpsecConnectorResponse extends _ListIpsecConnectorResponse {\n    _builtin_original?: _ListIpsecConnectorResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListIpsecConnectorResponseImpl  implements _ListIpsecConnectorResponse {\n    _builtin_original?: _ListIpsecConnectorResponse = undefined;\n    public ipsec_connectors: Array<IpsecConnector> ;\n    public limit: number ;\n    constructor(base: _ListIpsecConnectorResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'ipsec_connectors') >= 0) {\n            if (base.ipsec_connectors) {\n                this.ipsec_connectors = base.ipsec_connectors.map((original) => newIpsecConnectorImpl(original));\n            } else {\n                this.ipsec_connectors = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.ipsec_connectors !== undefined) {\n            for (const item of this.ipsec_connectors) {\n                if (item !== undefined && (item as IpsecConnectorImpl)._remove_builtin_extensions !== undefined) {\n                    (item as IpsecConnectorImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListIpsecConnectorResponseImpl(base: _ListIpsecConnectorResponse): ListIpsecConnectorResponseImpl {\n    return new ListIpsecConnectorResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _IssuerClient, IssuerClient, IssuerClientImpl, newIssuerClientImpl } from './issuerClient';\n\n\n/**\n * Response object for a clients query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListIssuerClientsResponse { \n    /**\n     * List of IssuerClients\n     */\n    clients?: Array<IssuerClient>;\n    /**\n     * Limit of IssuerClients in the response\n     */\n    limit: number;\n}\n\nexport interface ListIssuerClientsResponse extends _ListIssuerClientsResponse {\n    _builtin_original?: _ListIssuerClientsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListIssuerClientsResponseImpl  implements _ListIssuerClientsResponse {\n    _builtin_original?: _ListIssuerClientsResponse = undefined;\n    public clients: Array<IssuerClient>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListIssuerClientsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'clients') >= 0) {\n            if (base.clients) {\n                this.clients = base.clients.map((original) => newIssuerClientImpl(original));\n            } else {\n                this.clients = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.clients !== undefined) {\n            for (const item of this.clients) {\n                if (item !== undefined && (item as IssuerClientImpl)._remove_builtin_extensions !== undefined) {\n                    (item as IssuerClientImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListIssuerClientsResponseImpl(base: _ListIssuerClientsResponse): ListIssuerClientsResponseImpl {\n    return new ListIssuerClientsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Issuer, Issuer, IssuerImpl, newIssuerImpl } from './issuer';\n\n\n/**\n * Response object for an issuer extensions query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListIssuerExtensionsResponse { \n    /**\n     * List of Issuers\n     */\n    issuer_extensions?: Array<Issuer>;\n    /**\n     * Limit of issuers in the response\n     */\n    limit: number;\n}\n\nexport interface ListIssuerExtensionsResponse extends _ListIssuerExtensionsResponse {\n    _builtin_original?: _ListIssuerExtensionsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListIssuerExtensionsResponseImpl  implements _ListIssuerExtensionsResponse {\n    _builtin_original?: _ListIssuerExtensionsResponse = undefined;\n    public issuer_extensions: Array<Issuer>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListIssuerExtensionsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'issuer_extensions') >= 0) {\n            if (base.issuer_extensions) {\n                this.issuer_extensions = base.issuer_extensions.map((original) => newIssuerImpl(original));\n            } else {\n                this.issuer_extensions = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.issuer_extensions !== undefined) {\n            for (const item of this.issuer_extensions) {\n                if (item !== undefined && (item as IssuerImpl)._remove_builtin_extensions !== undefined) {\n                    (item as IssuerImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListIssuerExtensionsResponseImpl(base: _ListIssuerExtensionsResponse): ListIssuerExtensionsResponseImpl {\n    return new ListIssuerExtensionsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Issuer, Issuer, IssuerImpl, newIssuerImpl } from './issuer';\n\n\n/**\n * Response object for an issuer roots query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListIssuerRootsResponse { \n    /**\n     * List of Issuers\n     */\n    issuer_roots?: Array<Issuer>;\n    /**\n     * Limit of issuers in the response\n     */\n    limit: number;\n}\n\nexport interface ListIssuerRootsResponse extends _ListIssuerRootsResponse {\n    _builtin_original?: _ListIssuerRootsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListIssuerRootsResponseImpl  implements _ListIssuerRootsResponse {\n    _builtin_original?: _ListIssuerRootsResponse = undefined;\n    public issuer_roots: Array<Issuer>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListIssuerRootsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'issuer_roots') >= 0) {\n            if (base.issuer_roots) {\n                this.issuer_roots = base.issuer_roots.map((original) => newIssuerImpl(original));\n            } else {\n                this.issuer_roots = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.issuer_roots !== undefined) {\n            for (const item of this.issuer_roots) {\n                if (item !== undefined && (item as IssuerImpl)._remove_builtin_extensions !== undefined) {\n                    (item as IssuerImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListIssuerRootsResponseImpl(base: _ListIssuerRootsResponse): ListIssuerRootsResponseImpl {\n    return new ListIssuerRootsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _IssuerUpstream, IssuerUpstream, IssuerUpstreamImpl, newIssuerUpstreamImpl } from './issuerUpstream';\n\n\n/**\n * Response object for all issuer upstreams\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListIssuerUpstreams { \n    /**\n     * List of Issuers\n     */\n    issuer_upstreams?: Array<IssuerUpstream>;\n    /**\n     * Limit of issuers in the response\n     */\n    limit: number;\n}\n\nexport interface ListIssuerUpstreams extends _ListIssuerUpstreams {\n    _builtin_original?: _ListIssuerUpstreams;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListIssuerUpstreamsImpl  implements _ListIssuerUpstreams {\n    _builtin_original?: _ListIssuerUpstreams = undefined;\n    public issuer_upstreams: Array<IssuerUpstream>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListIssuerUpstreams) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'issuer_upstreams') >= 0) {\n            if (base.issuer_upstreams) {\n                this.issuer_upstreams = base.issuer_upstreams.map((original) => newIssuerUpstreamImpl(original));\n            } else {\n                this.issuer_upstreams = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.issuer_upstreams !== undefined) {\n            for (const item of this.issuer_upstreams) {\n                if (item !== undefined && (item as IssuerUpstreamImpl)._remove_builtin_extensions !== undefined) {\n                    (item as IssuerUpstreamImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListIssuerUpstreamsImpl(base: _ListIssuerUpstreams): ListIssuerUpstreamsImpl {\n    return new ListIssuerUpstreamsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A List result for JSON Web Key Set (JWKS)\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListJWKS { \n    /**\n     * A JSON Web Key Set (JWKS)\n     */\n    keys?: Array<object>;\n}\n\nexport interface ListJWKS extends _ListJWKS {\n    _builtin_original?: _ListJWKS;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListJWKSImpl  implements _ListJWKS {\n    _builtin_original?: _ListJWKS = undefined;\n    public keys: Array<object>  | undefined ;\n    constructor(base: _ListJWKS) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'keys') >= 0) {\n            this.keys = base.keys;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newListJWKSImpl(base: _ListJWKS): ListJWKSImpl {\n    return new ListJWKSImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LabelledObject, LabelledObject, LabelledObjectImpl, newLabelledObjectImpl } from './labelledObject';\n\n\n/**\n * Response object for listing LabelledObjects\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListLabelledObjectsResponse { \n    /**\n     * The matching LabelledObjects\n     */\n    labelled_objects: Array<LabelledObject>;\n    /**\n     * limit of LabelledObjects in the response\n     */\n    limit: number;\n    /**\n     * the id to request in the pagination query to get the next page\n     */\n    page_at_id?: string;\n}\n\nexport interface ListLabelledObjectsResponse extends _ListLabelledObjectsResponse {\n    _builtin_original?: _ListLabelledObjectsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListLabelledObjectsResponseImpl  implements _ListLabelledObjectsResponse {\n    _builtin_original?: _ListLabelledObjectsResponse = undefined;\n    public labelled_objects: Array<LabelledObject> ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _ListLabelledObjectsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'labelled_objects') >= 0) {\n            if (base.labelled_objects) {\n                this.labelled_objects = base.labelled_objects.map((original) => newLabelledObjectImpl(original));\n            } else {\n                this.labelled_objects = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.labelled_objects !== undefined) {\n            for (const item of this.labelled_objects) {\n                if (item !== undefined && (item as LabelledObjectImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LabelledObjectImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListLabelledObjectsResponseImpl(base: _ListLabelledObjectsResponse): ListLabelledObjectsResponseImpl {\n    return new ListLabelledObjectsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Label, Label, LabelImpl, newLabelImpl } from './label';\n\n\n/**\n * Resoponse object for listing Labels\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListLabelsResponse { \n    labels: Array<Label>;\n    /**\n     * limit of labels in the response\n     */\n    limit: number;\n    /**\n     * the id to request in the pagination query to get the next page\n     */\n    page_at_id?: string;\n}\n\nexport interface ListLabelsResponse extends _ListLabelsResponse {\n    _builtin_original?: _ListLabelsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListLabelsResponseImpl  implements _ListLabelsResponse {\n    _builtin_original?: _ListLabelsResponse = undefined;\n    public labels: Array<Label> ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _ListLabelsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'labels') >= 0) {\n            if (base.labels) {\n                this.labels = base.labels.map((original) => newLabelImpl(original));\n            } else {\n                this.labels = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.labels !== undefined) {\n            for (const item of this.labels) {\n                if (item !== undefined && (item as LabelImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LabelImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListLabelsResponseImpl(base: _ListLabelsResponse): ListLabelsResponseImpl {\n    return new ListLabelsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PageInfo, PageInfo, PageInfoImpl, newPageInfoImpl } from './pageInfo';\nimport { _Launcher, Launcher, LauncherImpl, newLauncherImpl } from './launcher';\n\n\n/**\n * Response object for Launchers list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListLaunchersResponse { \n    /**\n     * List of Launchers\n     */\n    launchers?: Array<Launcher>;\n    /**\n     * The maximum number of records returned in the response.\n     */\n    limit?: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n    page_info?: PageInfo;\n}\n\nexport interface ListLaunchersResponse extends _ListLaunchersResponse {\n    _builtin_original?: _ListLaunchersResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListLaunchersResponseImpl  implements _ListLaunchersResponse {\n    _builtin_original?: _ListLaunchersResponse = undefined;\n    public launchers: Array<Launcher>  | undefined ;\n    public limit: number  | undefined ;\n    public page_at_id: string  | undefined ;\n    public page_info: PageInfo  | undefined ;\n    constructor(base: _ListLaunchersResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'launchers') >= 0) {\n            if (base.launchers) {\n                this.launchers = base.launchers.map((original) => newLauncherImpl(original));\n            } else {\n                this.launchers = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_info') >= 0) {\n            this.page_info = base.page_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.launchers !== undefined) {\n            for (const item of this.launchers) {\n                if (item !== undefined && (item as LauncherImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LauncherImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListLaunchersResponseImpl(base: _ListLaunchersResponse): ListLaunchersResponseImpl {\n    return new ListLaunchersResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LicenseDetails, LicenseDetails, LicenseDetailsImpl, newLicenseDetailsImpl } from './licenseDetails';\n\n\n/**\n * The license details constraints for the organisations matching the query \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListLicenseDetailsResponse { \n    /**\n     * List of per-org license details\n     */\n    license_details: Array<LicenseDetails>;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListLicenseDetailsResponse extends _ListLicenseDetailsResponse {\n    _builtin_original?: _ListLicenseDetailsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListLicenseDetailsResponseImpl  implements _ListLicenseDetailsResponse {\n    _builtin_original?: _ListLicenseDetailsResponse = undefined;\n    public license_details: Array<LicenseDetails> ;\n    public page_at_id: string  | undefined ;\n    public limit: number ;\n    constructor(base: _ListLicenseDetailsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'license_details') >= 0) {\n            if (base.license_details) {\n                this.license_details = base.license_details.map((original) => newLicenseDetailsImpl(original));\n            } else {\n                this.license_details = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.license_details !== undefined) {\n            for (const item of this.license_details) {\n                if (item !== undefined && (item as LicenseDetailsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LicenseDetailsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListLicenseDetailsResponseImpl(base: _ListLicenseDetailsResponse): ListLicenseDetailsResponseImpl {\n    return new ListLicenseDetailsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LicenseEvaluationContext, LicenseEvaluationContext, LicenseEvaluationContextImpl, newLicenseEvaluationContextImpl } from './licenseEvaluationContext';\n\n\n/**\n * The license evaluation context matching the query \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListLicenseEvaluationContextsResponse { \n    /**\n     * List of per-org license evaluation context\n     */\n    license_evaluation_contexts: Array<LicenseEvaluationContext>;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListLicenseEvaluationContextsResponse extends _ListLicenseEvaluationContextsResponse {\n    _builtin_original?: _ListLicenseEvaluationContextsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListLicenseEvaluationContextsResponseImpl  implements _ListLicenseEvaluationContextsResponse {\n    _builtin_original?: _ListLicenseEvaluationContextsResponse = undefined;\n    public license_evaluation_contexts: Array<LicenseEvaluationContext> ;\n    public page_at_id: string  | undefined ;\n    public limit: number ;\n    constructor(base: _ListLicenseEvaluationContextsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'license_evaluation_contexts') >= 0) {\n            if (base.license_evaluation_contexts) {\n                this.license_evaluation_contexts = base.license_evaluation_contexts.map((original) => newLicenseEvaluationContextImpl(original));\n            } else {\n                this.license_evaluation_contexts = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.license_evaluation_contexts !== undefined) {\n            for (const item of this.license_evaluation_contexts) {\n                if (item !== undefined && (item as LicenseEvaluationContextImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LicenseEvaluationContextImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListLicenseEvaluationContextsResponseImpl(base: _ListLicenseEvaluationContextsResponse): ListLicenseEvaluationContextsResponseImpl {\n    return new ListLicenseEvaluationContextsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _License, License, LicenseImpl, newLicenseImpl } from './license';\n\n\n/**\n * Response object for licenses query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListLicensesResponse { \n    /**\n     * List of  licenses\n     */\n    licenses?: Array<License>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n}\n\nexport interface ListLicensesResponse extends _ListLicensesResponse {\n    _builtin_original?: _ListLicensesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListLicensesResponseImpl  implements _ListLicensesResponse {\n    _builtin_original?: _ListLicensesResponse = undefined;\n    public licenses: Array<License>  | undefined ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _ListLicensesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'licenses') >= 0) {\n            if (base.licenses) {\n                this.licenses = base.licenses.map((original) => newLicenseImpl(original));\n            } else {\n                this.licenses = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.licenses !== undefined) {\n            for (const item of this.licenses) {\n                if (item !== undefined && (item as LicenseImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LicenseImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListLicensesResponseImpl(base: _ListLicensesResponse): ListLicensesResponseImpl {\n    return new ListLicensesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Application diagnostic log\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Log { \n    /**\n     * log\n     */\n    readonly log?: string;\n    /**\n     * log stream\n     */\n    readonly stream?: string;\n    /**\n     * timestamp of log\n     */\n    readonly timestamp?: string;\n    /**\n     * name of application associated with log\n     */\n    readonly app?: string;\n    /**\n     * unique shortuuid for the  organisation\n     */\n    readonly org_id?: string;\n    /**\n     * unique shortuuid for the sub-organisation\n     */\n    readonly sub_org_id?: string;\n    /**\n     * environment that app is running in\n     */\n    readonly env?: string;\n}\n\nexport interface Log extends _Log {\n    _builtin_original?: _Log;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LogImpl  implements _Log {\n    _builtin_original?: _Log = undefined;\n    public readonly log: string  | undefined ;\n    public readonly stream: string  | undefined ;\n    public readonly timestamp: string  | undefined ;\n    public readonly app: string  | undefined ;\n    public readonly org_id: string  | undefined ;\n    public readonly sub_org_id: string  | undefined ;\n    public readonly env: string  | undefined ;\n    constructor(base: _Log) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'log') >= 0) {\n            this.log = base.log;\n        }\n        if (Object.keys(base).findIndex(key => key === 'stream') >= 0) {\n            this.stream = base.stream;\n        }\n        if (Object.keys(base).findIndex(key => key === 'timestamp') >= 0) {\n            this.timestamp = base.timestamp;\n        }\n        if (Object.keys(base).findIndex(key => key === 'app') >= 0) {\n            this.app = base.app;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'sub_org_id') >= 0) {\n            this.sub_org_id = base.sub_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'env') >= 0) {\n            this.env = base.env;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newLogImpl(base: _Log): LogImpl {\n    return new LogImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Log, Log, LogImpl, newLogImpl } from './log';\n\n\n/**\n * Response object for logs\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListLogsResponse { \n    /**\n     * List of logs\n     */\n    logs?: Array<Log>;\n    /**\n     * Limit of logs in the response\n     */\n    limit: number;\n}\n\nexport interface ListLogsResponse extends _ListLogsResponse {\n    _builtin_original?: _ListLogsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListLogsResponseImpl  implements _ListLogsResponse {\n    _builtin_original?: _ListLogsResponse = undefined;\n    public logs: Array<Log>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListLogsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'logs') >= 0) {\n            if (base.logs) {\n                this.logs = base.logs.map((original) => newLogImpl(original));\n            } else {\n                this.logs = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.logs !== undefined) {\n            for (const item of this.logs) {\n                if (item !== undefined && (item as LogImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LogImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListLogsResponseImpl(base: _ListLogsResponse): ListLogsResponseImpl {\n    return new ListLogsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MFAChallengeMethod, MFAChallengeMethod, MFAChallengeMethodImpl, newMFAChallengeMethodImpl } from './mFAChallengeMethod';\n\n\n/**\n * Response object for user\\'s challenge methods query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListMFAChallengeMethods { \n    /**\n     * List of MFAChallengeMethods objects\n     */\n    mfa_challenge_methods?: Array<MFAChallengeMethod>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListMFAChallengeMethods extends _ListMFAChallengeMethods {\n    _builtin_original?: _ListMFAChallengeMethods;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListMFAChallengeMethodsImpl  implements _ListMFAChallengeMethods {\n    _builtin_original?: _ListMFAChallengeMethods = undefined;\n    public mfa_challenge_methods: Array<MFAChallengeMethod>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListMFAChallengeMethods) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'mfa_challenge_methods') >= 0) {\n            if (base.mfa_challenge_methods) {\n                this.mfa_challenge_methods = base.mfa_challenge_methods.map((original) => newMFAChallengeMethodImpl(original));\n            } else {\n                this.mfa_challenge_methods = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.mfa_challenge_methods !== undefined) {\n            for (const item of this.mfa_challenge_methods) {\n                if (item !== undefined && (item as MFAChallengeMethodImpl)._remove_builtin_extensions !== undefined) {\n                    (item as MFAChallengeMethodImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListMFAChallengeMethodsImpl(base: _ListMFAChallengeMethods): ListMFAChallengeMethodsImpl {\n    return new ListMFAChallengeMethodsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MessageEndpointMetadata, MessageEndpointMetadata, MessageEndpointMetadataImpl, newMessageEndpointMetadataImpl } from './messageEndpointMetadata';\nimport { _MessageEndpointSpec, MessageEndpointSpec, MessageEndpointSpecImpl, newMessageEndpointSpecImpl } from './messageEndpointSpec';\n\n\n/**\n * A single address on which we can notify a user (e.g. phone#, push context, ...)\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MessageEndpoint { \n    metadata?: MessageEndpointMetadata;\n    spec?: MessageEndpointSpec;\n}\n\nexport interface MessageEndpoint extends _MessageEndpoint {\n    _builtin_original?: _MessageEndpoint;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MessageEndpointImpl  implements _MessageEndpoint {\n    _builtin_original?: _MessageEndpoint = undefined;\n    public metadata: MessageEndpointMetadata  | undefined ;\n    public spec: MessageEndpointSpec  | undefined ;\n    constructor(base: _MessageEndpoint) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMessageEndpointImpl(base: _MessageEndpoint): MessageEndpointImpl {\n    return new MessageEndpointImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MessageEndpoint, MessageEndpoint, MessageEndpointImpl, newMessageEndpointImpl } from './messageEndpoint';\n\n\n/**\n * A list of a users messaging endpoints.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListMessageEndpointsResponse { \n    /**\n     * List of endpoints\n     */\n    messages?: Array<MessageEndpoint>;\n    /**\n     * Limit the number of endpoints returned\n     */\n    limit: number;\n}\n\nexport interface ListMessageEndpointsResponse extends _ListMessageEndpointsResponse {\n    _builtin_original?: _ListMessageEndpointsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListMessageEndpointsResponseImpl  implements _ListMessageEndpointsResponse {\n    _builtin_original?: _ListMessageEndpointsResponse = undefined;\n    public messages: Array<MessageEndpoint>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListMessageEndpointsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'messages') >= 0) {\n            if (base.messages) {\n                this.messages = base.messages.map((original) => newMessageEndpointImpl(original));\n            } else {\n                this.messages = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.messages !== undefined) {\n            for (const item of this.messages) {\n                if (item !== undefined && (item as MessageEndpointImpl)._remove_builtin_extensions !== undefined) {\n                    (item as MessageEndpointImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListMessageEndpointsResponseImpl(base: _ListMessageEndpointsResponse): ListMessageEndpointsResponseImpl {\n    return new ListMessageEndpointsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourceMember, ResourceMember, ResourceMemberImpl, newResourceMemberImpl } from './resourceMember';\n\n\n/**\n * A simple object describing whether or not object credentials exist. Holds only the most basic information since it exposed through a less restricted endpoint. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ObjectCredentialExistenceInfo { \n    /**\n     * Unique identifier\n     */\n    credential_id?: string;\n    /**\n     * Unique identifier\n     */\n    object_id?: string;\n    /**\n     * The type of an object\n     */\n    object_type?: string;\n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n    /**\n     * The purpose of a credential. This allows a given object to store multiple credentials which may be accessed for different purposes, such as credential stuffing vs mutual TLS. Agilicus supports some default ones:   - `stuffing`:  This credential will be used for credential stuffing.     For example, you can configure an SSH Resource to present a private key without the end     user ever seeing it. \n     */\n    purpose?: string;\n    /**\n     * A list of resources that are associated with this Credential. This would be populated if the credential type is a group.\n     */\n    resource_members?: Array<ResourceMember>;\n}\n\nexport interface ObjectCredentialExistenceInfo extends _ObjectCredentialExistenceInfo {\n    _builtin_original?: _ObjectCredentialExistenceInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ObjectCredentialExistenceInfoImpl  implements _ObjectCredentialExistenceInfo {\n    _builtin_original?: _ObjectCredentialExistenceInfo = undefined;\n    public credential_id: string  | undefined ;\n    public object_id: string  | undefined ;\n    public object_type: string  | undefined ;\n    public org_id: string  | undefined ;\n    public purpose: string  | undefined ;\n    public resource_members: Array<ResourceMember>  | undefined ;\n    constructor(base: _ObjectCredentialExistenceInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'credential_id') >= 0) {\n            this.credential_id = base.credential_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'object_id') >= 0) {\n            this.object_id = base.object_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'object_type') >= 0) {\n            this.object_type = base.object_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'purpose') >= 0) {\n            this.purpose = base.purpose;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_members') >= 0) {\n            if (base.resource_members) {\n                this.resource_members = base.resource_members.map((original) => newResourceMemberImpl(original));\n            } else {\n                this.resource_members = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.resource_members !== undefined) {\n            for (const item of this.resource_members) {\n                if (item !== undefined && (item as ResourceMemberImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ResourceMemberImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newObjectCredentialExistenceInfoImpl(base: _ObjectCredentialExistenceInfo): ObjectCredentialExistenceInfoImpl {\n    return new ObjectCredentialExistenceInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ObjectCredentialExistenceInfo, ObjectCredentialExistenceInfo, ObjectCredentialExistenceInfoImpl, newObjectCredentialExistenceInfoImpl } from './objectCredentialExistenceInfo';\n\n\n/**\n * Response object for listing ObjectCredentialExistenceInfo\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListObjectCredentialExistenceInfoResponse { \n    /**\n     * The matching ObjectCredentialExistenceInfo\n     */\n    object_credential_existence_info: Array<ObjectCredentialExistenceInfo>;\n    /**\n     * limit of ObjectCredentialExistenceInfo in the response\n     */\n    limit: number;\n    /**\n     * the id to request in the pagination query to get the next page\n     */\n    page_at_id?: string;\n}\n\nexport interface ListObjectCredentialExistenceInfoResponse extends _ListObjectCredentialExistenceInfoResponse {\n    _builtin_original?: _ListObjectCredentialExistenceInfoResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListObjectCredentialExistenceInfoResponseImpl  implements _ListObjectCredentialExistenceInfoResponse {\n    _builtin_original?: _ListObjectCredentialExistenceInfoResponse = undefined;\n    public object_credential_existence_info: Array<ObjectCredentialExistenceInfo> ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _ListObjectCredentialExistenceInfoResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'object_credential_existence_info') >= 0) {\n            if (base.object_credential_existence_info) {\n                this.object_credential_existence_info = base.object_credential_existence_info.map((original) => newObjectCredentialExistenceInfoImpl(original));\n            } else {\n                this.object_credential_existence_info = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.object_credential_existence_info !== undefined) {\n            for (const item of this.object_credential_existence_info) {\n                if (item !== undefined && (item as ObjectCredentialExistenceInfoImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ObjectCredentialExistenceInfoImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListObjectCredentialExistenceInfoResponseImpl(base: _ListObjectCredentialExistenceInfoResponse): ListObjectCredentialExistenceInfoResponseImpl {\n    return new ListObjectCredentialExistenceInfoResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ObjectCredentialSpec, ObjectCredentialSpec, ObjectCredentialSpecImpl, newObjectCredentialSpecImpl } from './objectCredentialSpec';\nimport { _ObjectCredentialStatus, ObjectCredentialStatus, ObjectCredentialStatusImpl, newObjectCredentialStatusImpl } from './objectCredentialStatus';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\n\n\n/**\n * Credentials associated with an object in the system. Depending on the type of object, these may be used for different purposes: presenting credentials to an upstream service so that the end user does not have to; authenticating an upstream connection using mTLS, etc. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ObjectCredential { \n    metadata?: MetadataWithId;\n    spec: ObjectCredentialSpec;\n    status?: ObjectCredentialStatus;\n}\n\nexport interface ObjectCredential extends _ObjectCredential {\n    _builtin_original?: _ObjectCredential;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ObjectCredentialImpl  implements _ObjectCredential {\n    _builtin_original?: _ObjectCredential = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: ObjectCredentialSpec ;\n    public status: ObjectCredentialStatus  | undefined ;\n    constructor(base: _ObjectCredential) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newObjectCredentialImpl(base: _ObjectCredential): ObjectCredentialImpl {\n    return new ObjectCredentialImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ObjectCredential, ObjectCredential, ObjectCredentialImpl, newObjectCredentialImpl } from './objectCredential';\n\n\n/**\n * Response object for listing ObjectCredentials.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListObjectCredentialsResponse { \n    /**\n     * The matching ObjectCredential items\n     */\n    object_credentials: Array<ObjectCredential>;\n    /**\n     * limit of ObjectCredential items in the response\n     */\n    limit: number;\n    /**\n     * the id to request in the pagination query to get the next page\n     */\n    page_at_id?: string;\n}\n\nexport interface ListObjectCredentialsResponse extends _ListObjectCredentialsResponse {\n    _builtin_original?: _ListObjectCredentialsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListObjectCredentialsResponseImpl  implements _ListObjectCredentialsResponse {\n    _builtin_original?: _ListObjectCredentialsResponse = undefined;\n    public object_credentials: Array<ObjectCredential> ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _ListObjectCredentialsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'object_credentials') >= 0) {\n            if (base.object_credentials) {\n                this.object_credentials = base.object_credentials.map((original) => newObjectCredentialImpl(original));\n            } else {\n                this.object_credentials = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.object_credentials !== undefined) {\n            for (const item of this.object_credentials) {\n                if (item !== undefined && (item as ObjectCredentialImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ObjectCredentialImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListObjectCredentialsResponseImpl(base: _ListObjectCredentialsResponse): ListObjectCredentialsResponseImpl {\n    return new ListObjectCredentialsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _OrgUpstreamUserIdentityStatus, OrgUpstreamUserIdentityStatus, OrgUpstreamUserIdentityStatusImpl, newOrgUpstreamUserIdentityStatusImpl } from './orgUpstreamUserIdentityStatus';\nimport { _OrgUpstreamUserIdentitySpec, OrgUpstreamUserIdentitySpec, OrgUpstreamUserIdentitySpecImpl, newOrgUpstreamUserIdentitySpecImpl } from './orgUpstreamUserIdentitySpec';\n\n\n/**\n * Upstream user identity data assigned to an org. THe UpstreamUserIdentity record is not specific to an org. This record would associate a user org record (User configured in a particular organisation), to an upstream identity. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OrgUpstreamUserIdentity { \n    metadata?: MetadataWithId;\n    spec: OrgUpstreamUserIdentitySpec;\n    status?: OrgUpstreamUserIdentityStatus;\n}\n\nexport interface OrgUpstreamUserIdentity extends _OrgUpstreamUserIdentity {\n    _builtin_original?: _OrgUpstreamUserIdentity;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OrgUpstreamUserIdentityImpl  implements _OrgUpstreamUserIdentity {\n    _builtin_original?: _OrgUpstreamUserIdentity = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: OrgUpstreamUserIdentitySpec ;\n    public status: OrgUpstreamUserIdentityStatus  | undefined ;\n    constructor(base: _OrgUpstreamUserIdentity) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOrgUpstreamUserIdentityImpl(base: _OrgUpstreamUserIdentity): OrgUpstreamUserIdentityImpl {\n    return new OrgUpstreamUserIdentityImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _OrgUpstreamUserIdentity, OrgUpstreamUserIdentity, OrgUpstreamUserIdentityImpl, newOrgUpstreamUserIdentityImpl } from './orgUpstreamUserIdentity';\n\n\n/**\n * Response object for org upstream user identity query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListOrgUpstreamUserIdentitiesResponse { \n    /**\n     * The matching OrgUpstreamUserIdentity objects\n     */\n    org_upstream_user_identities: Array<OrgUpstreamUserIdentity>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n}\n\nexport interface ListOrgUpstreamUserIdentitiesResponse extends _ListOrgUpstreamUserIdentitiesResponse {\n    _builtin_original?: _ListOrgUpstreamUserIdentitiesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListOrgUpstreamUserIdentitiesResponseImpl  implements _ListOrgUpstreamUserIdentitiesResponse {\n    _builtin_original?: _ListOrgUpstreamUserIdentitiesResponse = undefined;\n    public org_upstream_user_identities: Array<OrgUpstreamUserIdentity> ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _ListOrgUpstreamUserIdentitiesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_upstream_user_identities') >= 0) {\n            if (base.org_upstream_user_identities) {\n                this.org_upstream_user_identities = base.org_upstream_user_identities.map((original) => newOrgUpstreamUserIdentityImpl(original));\n            } else {\n                this.org_upstream_user_identities = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.org_upstream_user_identities !== undefined) {\n            for (const item of this.org_upstream_user_identities) {\n                if (item !== undefined && (item as OrgUpstreamUserIdentityImpl)._remove_builtin_extensions !== undefined) {\n                    (item as OrgUpstreamUserIdentityImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListOrgUpstreamUserIdentitiesResponseImpl(base: _ListOrgUpstreamUserIdentitiesResponse): ListOrgUpstreamUserIdentitiesResponseImpl {\n    return new ListOrgUpstreamUserIdentitiesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Organisation, Organisation, OrganisationImpl, newOrganisationImpl } from './organisation';\n\n\n/**\n * Response object for organisation query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListOrgsResponse { \n    /**\n     * List of organisations\n     */\n    orgs?: Array<Organisation>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n}\n\nexport interface ListOrgsResponse extends _ListOrgsResponse {\n    _builtin_original?: _ListOrgsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListOrgsResponseImpl  implements _ListOrgsResponse {\n    _builtin_original?: _ListOrgsResponse = undefined;\n    public orgs: Array<Organisation>  | undefined ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _ListOrgsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'orgs') >= 0) {\n            if (base.orgs) {\n                this.orgs = base.orgs.map((original) => newOrganisationImpl(original));\n            } else {\n                this.orgs = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.orgs !== undefined) {\n            for (const item of this.orgs) {\n                if (item !== undefined && (item as OrganisationImpl)._remove_builtin_extensions !== undefined) {\n                    (item as OrganisationImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListOrgsResponseImpl(base: _ListOrgsResponse): ListOrgsResponseImpl {\n    return new ListOrgsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _PointOfPresenceSpec, PointOfPresenceSpec, PointOfPresenceSpecImpl, newPointOfPresenceSpecImpl } from './pointOfPresenceSpec';\nimport { _PointOfPresenceStatus, PointOfPresenceStatus, PointOfPresenceStatusImpl, newPointOfPresenceStatusImpl } from './pointOfPresenceStatus';\n\n\n/**\n * A PointOfPresence represents a logical location providing functionality to customers. Each point of presence resides in a fairly small geographical area. Some point of presences support more functionality than others, which is reflected in their capabilities. A point of presence\\'s name is globally unique, and will never change. All point of presences are tagged with their name. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PointOfPresence { \n    metadata?: MetadataWithId;\n    spec: PointOfPresenceSpec;\n    status?: PointOfPresenceStatus;\n}\n\nexport interface PointOfPresence extends _PointOfPresence {\n    _builtin_original?: _PointOfPresence;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PointOfPresenceImpl  implements _PointOfPresence {\n    _builtin_original?: _PointOfPresence = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: PointOfPresenceSpec ;\n    public status: PointOfPresenceStatus  | undefined ;\n    constructor(base: _PointOfPresence) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newPointOfPresenceImpl(base: _PointOfPresence): PointOfPresenceImpl {\n    return new PointOfPresenceImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PointOfPresence, PointOfPresence, PointOfPresenceImpl, newPointOfPresenceImpl } from './pointOfPresence';\n\n\n/**\n * Response object for listing point of presences\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListPointOfPresencesResponse { \n    /**\n     * The list of matching point of presences\n     */\n    point_of_presences: Array<PointOfPresence>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The name to request in the pagination query to get the next page.\n     */\n    page_at_name?: string;\n}\n\nexport interface ListPointOfPresencesResponse extends _ListPointOfPresencesResponse {\n    _builtin_original?: _ListPointOfPresencesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListPointOfPresencesResponseImpl  implements _ListPointOfPresencesResponse {\n    _builtin_original?: _ListPointOfPresencesResponse = undefined;\n    public point_of_presences: Array<PointOfPresence> ;\n    public limit: number ;\n    public page_at_name: string  | undefined ;\n    constructor(base: _ListPointOfPresencesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'point_of_presences') >= 0) {\n            if (base.point_of_presences) {\n                this.point_of_presences = base.point_of_presences.map((original) => newPointOfPresenceImpl(original));\n            } else {\n                this.point_of_presences = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_name') >= 0) {\n            this.page_at_name = base.page_at_name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.point_of_presences !== undefined) {\n            for (const item of this.point_of_presences) {\n                if (item !== undefined && (item as PointOfPresenceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as PointOfPresenceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListPointOfPresencesResponseImpl(base: _ListPointOfPresencesResponse): ListPointOfPresencesResponseImpl {\n    return new ListPointOfPresencesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PolicySpec, PolicySpec, PolicySpecImpl, newPolicySpecImpl } from './policySpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _PolicyStatus, PolicyStatus, PolicyStatusImpl, newPolicyStatusImpl } from './policyStatus';\n\n\n/**\n * A policy describes how to evaluate a set of conditions in order to enforce a set of actions. A policy engine is the component that evaluates the set of policy rules and a set of input that determines the outcome. Each policy rule is evaluated in priority order. If all the conditions in the policy rule evaluate to `true` the rule\\'s action is taken, otherwise the next policy rule is evaluated. If none of the policy rules evaluate to `true` then the policy\\'s `default_action` is taken. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Policy { \n    metadata?: MetadataWithId;\n    spec: PolicySpec;\n    status?: PolicyStatus;\n}\n\nexport interface Policy extends _Policy {\n    _builtin_original?: _Policy;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PolicyImpl  implements _Policy {\n    _builtin_original?: _Policy = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: PolicySpec ;\n    public status: PolicyStatus  | undefined ;\n    constructor(base: _Policy) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newPolicyImpl(base: _Policy): PolicyImpl {\n    return new PolicyImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Policy, Policy, PolicyImpl, newPolicyImpl } from './policy';\n\n\n/**\n * The list of policies\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListPoliciesResponse { \n    /**\n     * List of policies\n     */\n    authentication_policies: Array<Policy>;\n    /**\n     * Limit of policies in the response\n     */\n    limit: number;\n}\n\nexport interface ListPoliciesResponse extends _ListPoliciesResponse {\n    _builtin_original?: _ListPoliciesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListPoliciesResponseImpl  implements _ListPoliciesResponse {\n    _builtin_original?: _ListPoliciesResponse = undefined;\n    public authentication_policies: Array<Policy> ;\n    public limit: number ;\n    constructor(base: _ListPoliciesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'authentication_policies') >= 0) {\n            if (base.authentication_policies) {\n                this.authentication_policies = base.authentication_policies.map((original) => newPolicyImpl(original));\n            } else {\n                this.authentication_policies = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.authentication_policies !== undefined) {\n            for (const item of this.authentication_policies) {\n                if (item !== undefined && (item as PolicyImpl)._remove_builtin_extensions !== undefined) {\n                    (item as PolicyImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListPoliciesResponseImpl(base: _ListPoliciesResponse): ListPoliciesResponseImpl {\n    return new ListPoliciesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PolicyRuleSpec, PolicyRuleSpec, PolicyRuleSpecImpl, newPolicyRuleSpecImpl } from './policyRuleSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\n\n\n/**\n * A policy rule describes a specific evaluation stage in the policy\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PolicyRule { \n    metadata?: MetadataWithId;\n    spec: PolicyRuleSpec;\n}\n\nexport interface PolicyRule extends _PolicyRule {\n    _builtin_original?: _PolicyRule;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PolicyRuleImpl  implements _PolicyRule {\n    _builtin_original?: _PolicyRule = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: PolicyRuleSpec ;\n    constructor(base: _PolicyRule) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newPolicyRuleImpl(base: _PolicyRule): PolicyRuleImpl {\n    return new PolicyRuleImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PolicyRule, PolicyRule, PolicyRuleImpl, newPolicyRuleImpl } from './policyRule';\n\n\n/**\n * The list of policies rules\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListPolicyRulesResponse { \n    /**\n     * List of policy rules\n     */\n    policy_rules: Array<PolicyRule>;\n    /**\n     * Limit of policies in the response\n     */\n    limit: number;\n}\n\nexport interface ListPolicyRulesResponse extends _ListPolicyRulesResponse {\n    _builtin_original?: _ListPolicyRulesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListPolicyRulesResponseImpl  implements _ListPolicyRulesResponse {\n    _builtin_original?: _ListPolicyRulesResponse = undefined;\n    public policy_rules: Array<PolicyRule> ;\n    public limit: number ;\n    constructor(base: _ListPolicyRulesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'policy_rules') >= 0) {\n            if (base.policy_rules) {\n                this.policy_rules = base.policy_rules.map((original) => newPolicyRuleImpl(original));\n            } else {\n                this.policy_rules = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.policy_rules !== undefined) {\n            for (const item of this.policy_rules) {\n                if (item !== undefined && (item as PolicyRuleImpl)._remove_builtin_extensions !== undefined) {\n                    (item as PolicyRuleImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListPolicyRulesResponseImpl(base: _ListPolicyRulesResponse): ListPolicyRulesResponseImpl {\n    return new ListPolicyRulesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _PolicyTemplateInstanceSpec, PolicyTemplateInstanceSpec, PolicyTemplateInstanceSpecImpl, newPolicyTemplateInstanceSpecImpl } from './policyTemplateInstanceSpec';\n\n\n/**\n * A policy template. Each PolicyTemplateInstance instantiates a specific precanned set of policy constructs which compose the overall policy for an organistion. For example you can create a PolicyTemplateInsance which defines the parameters of a template which defines when a user must present a second factor when accesing a resource.  Mulitple insances of a given template can coexist. They can be updated and deleted independently as requirements change.  A template is uniquely identified by a \\'name\\' passed at instantiation time.`  By default, template instances are hooked into the global policy of the organisation. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PolicyTemplateInstance { \n    metadata?: MetadataWithId;\n    spec: PolicyTemplateInstanceSpec;\n}\n\nexport interface PolicyTemplateInstance extends _PolicyTemplateInstance {\n    _builtin_original?: _PolicyTemplateInstance;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PolicyTemplateInstanceImpl  implements _PolicyTemplateInstance {\n    _builtin_original?: _PolicyTemplateInstance = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: PolicyTemplateInstanceSpec ;\n    constructor(base: _PolicyTemplateInstance) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newPolicyTemplateInstanceImpl(base: _PolicyTemplateInstance): PolicyTemplateInstanceImpl {\n    return new PolicyTemplateInstanceImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PolicyTemplateInstance, PolicyTemplateInstance, PolicyTemplateInstanceImpl, newPolicyTemplateInstanceImpl } from './policyTemplateInstance';\n\n\n/**\n * Response object for listing PolicyTemplateInstance objects.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListPolicyTemplateInstancesResponse { \n    /**\n     * List of PolicyTemplateInstance objects\n     */\n    policy_template_instances: Array<PolicyTemplateInstance>;\n    /**\n     * The maximum number of records returned in the response.\n     */\n    limit: number;\n}\n\nexport interface ListPolicyTemplateInstancesResponse extends _ListPolicyTemplateInstancesResponse {\n    _builtin_original?: _ListPolicyTemplateInstancesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListPolicyTemplateInstancesResponseImpl  implements _ListPolicyTemplateInstancesResponse {\n    _builtin_original?: _ListPolicyTemplateInstancesResponse = undefined;\n    public policy_template_instances: Array<PolicyTemplateInstance> ;\n    public limit: number ;\n    constructor(base: _ListPolicyTemplateInstancesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'policy_template_instances') >= 0) {\n            if (base.policy_template_instances) {\n                this.policy_template_instances = base.policy_template_instances.map((original) => newPolicyTemplateInstanceImpl(original));\n            } else {\n                this.policy_template_instances = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.policy_template_instances !== undefined) {\n            for (const item of this.policy_template_instances) {\n                if (item !== undefined && (item as PolicyTemplateInstanceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as PolicyTemplateInstanceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListPolicyTemplateInstancesResponseImpl(base: _ListPolicyTemplateInstancesResponse): ListPolicyTemplateInstancesResponseImpl {\n    return new ListPolicyTemplateInstancesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _ProductTableVersionSpec, ProductTableVersionSpec, ProductTableVersionSpecImpl, newProductTableVersionSpecImpl } from './productTableVersionSpec';\n\n\n/**\n * A version of the Product Table. A product table describes the properties of the products offered by Agilicus alongside their respective features and constraints. It is a table in that typically each product has a set of contraints related to each feature.  When customers subscribe to Agilicus, they choose a Product. At this time they are granted a License linked to that product for the latest version of the ProductTable. When new versions of the ProductTable are published, existing licenses are unchanged: they continue to use the version with which they were previously associated.  ProductTableVersions are published and modified atomically. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ProductTableVersion { \n    metadata?: MetadataWithId;\n    spec: ProductTableVersionSpec;\n}\n\nexport interface ProductTableVersion extends _ProductTableVersion {\n    _builtin_original?: _ProductTableVersion;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ProductTableVersionImpl  implements _ProductTableVersion {\n    _builtin_original?: _ProductTableVersion = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: ProductTableVersionSpec ;\n    constructor(base: _ProductTableVersion) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newProductTableVersionImpl(base: _ProductTableVersion): ProductTableVersionImpl {\n    return new ProductTableVersionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ProductTableVersion, ProductTableVersion, ProductTableVersionImpl, newProductTableVersionImpl } from './productTableVersion';\n\n\n/**\n * Response object for product table query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListProductTableVersionsResponse { \n    /**\n     * List of product table versions\n     */\n    product_table_versions?: Array<ProductTableVersion>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The version to request in the pagination query to get the next page.\n     */\n    page_at_version?: string;\n}\n\nexport interface ListProductTableVersionsResponse extends _ListProductTableVersionsResponse {\n    _builtin_original?: _ListProductTableVersionsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListProductTableVersionsResponseImpl  implements _ListProductTableVersionsResponse {\n    _builtin_original?: _ListProductTableVersionsResponse = undefined;\n    public product_table_versions: Array<ProductTableVersion>  | undefined ;\n    public limit: number ;\n    public page_at_version: string  | undefined ;\n    constructor(base: _ListProductTableVersionsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'product_table_versions') >= 0) {\n            if (base.product_table_versions) {\n                this.product_table_versions = base.product_table_versions.map((original) => newProductTableVersionImpl(original));\n            } else {\n                this.product_table_versions = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_version') >= 0) {\n            this.page_at_version = base.page_at_version;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.product_table_versions !== undefined) {\n            for (const item of this.product_table_versions) {\n                if (item !== undefined && (item as ProductTableVersionImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ProductTableVersionImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListProductTableVersionsResponseImpl(base: _ListProductTableVersionsResponse): ListProductTableVersionsResponseImpl {\n    return new ListProductTableVersionsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Product, Product, ProductImpl, newProductImpl } from './product';\n\n\n/**\n * Response object for listing products\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListProductsResponse { \n    /**\n     * List of products\n     */\n    products?: Array<Product>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListProductsResponse extends _ListProductsResponse {\n    _builtin_original?: _ListProductsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListProductsResponseImpl  implements _ListProductsResponse {\n    _builtin_original?: _ListProductsResponse = undefined;\n    public products: Array<Product>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListProductsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'products') >= 0) {\n            if (base.products) {\n                this.products = base.products.map((original) => newProductImpl(original));\n            } else {\n                this.products = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.products !== undefined) {\n            for (const item of this.products) {\n                if (item !== undefined && (item as ProductImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ProductImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListProductsResponseImpl(base: _ListProductsResponse): ListProductsResponseImpl {\n    return new ListProductsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _PublicFileOrgLinkSpec, PublicFileOrgLinkSpec, PublicFileOrgLinkSpecImpl, newPublicFileOrgLinkSpecImpl } from './publicFileOrgLinkSpec';\n\n\n/**\n * An link configuring one organisation to use another as a source of truth for public file lookups. File lookups against `link_org_id` and the tag specified in `file_tag` will use the matching file for `target_org_d`. Note that if `target_org_id` also has a link, it will be recursively searched. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PublicFileOrgLink { \n    metadata?: MetadataWithId;\n    spec: PublicFileOrgLinkSpec;\n}\n\nexport interface PublicFileOrgLink extends _PublicFileOrgLink {\n    _builtin_original?: _PublicFileOrgLink;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PublicFileOrgLinkImpl  implements _PublicFileOrgLink {\n    _builtin_original?: _PublicFileOrgLink = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: PublicFileOrgLinkSpec ;\n    constructor(base: _PublicFileOrgLink) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newPublicFileOrgLinkImpl(base: _PublicFileOrgLink): PublicFileOrgLinkImpl {\n    return new PublicFileOrgLinkImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PublicFileOrgLink, PublicFileOrgLink, PublicFileOrgLinkImpl, newPublicFileOrgLinkImpl } from './publicFileOrgLink';\n\n\n/**\n * The matching public file org links \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListPublicFileOrgLinksResponse { \n    /**\n     * Matching links\n     */\n    public_file_org_links: Array<PublicFileOrgLink>;\n    /**\n     * Limit of entries in response\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n}\n\nexport interface ListPublicFileOrgLinksResponse extends _ListPublicFileOrgLinksResponse {\n    _builtin_original?: _ListPublicFileOrgLinksResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListPublicFileOrgLinksResponseImpl  implements _ListPublicFileOrgLinksResponse {\n    _builtin_original?: _ListPublicFileOrgLinksResponse = undefined;\n    public public_file_org_links: Array<PublicFileOrgLink> ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _ListPublicFileOrgLinksResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'public_file_org_links') >= 0) {\n            if (base.public_file_org_links) {\n                this.public_file_org_links = base.public_file_org_links.map((original) => newPublicFileOrgLinkImpl(original));\n            } else {\n                this.public_file_org_links = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.public_file_org_links !== undefined) {\n            for (const item of this.public_file_org_links) {\n                if (item !== undefined && (item as PublicFileOrgLinkImpl)._remove_builtin_extensions !== undefined) {\n                    (item as PublicFileOrgLinkImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListPublicFileOrgLinksResponseImpl(base: _ListPublicFileOrgLinksResponse): ListPublicFileOrgLinksResponseImpl {\n    return new ListPublicFileOrgLinksResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RegionSpec, RegionSpec, RegionSpecImpl, newRegionSpecImpl } from './regionSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _RegionStatus, RegionStatus, RegionStatusImpl, newRegionStatusImpl } from './regionStatus';\n\n\n/**\n * A Region represents a logical regional location providing functionality to customers. Each Region represents a collection of PointOfPresence \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Region { \n    metadata?: MetadataWithId;\n    spec: RegionSpec;\n    status?: RegionStatus;\n}\n\nexport interface Region extends _Region {\n    _builtin_original?: _Region;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RegionImpl  implements _Region {\n    _builtin_original?: _Region = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: RegionSpec ;\n    public status: RegionStatus  | undefined ;\n    constructor(base: _Region) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newRegionImpl(base: _Region): RegionImpl {\n    return new RegionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Region, Region, RegionImpl, newRegionImpl } from './region';\n\n\n/**\n * Response object for listing Regions\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListRegionResponse { \n    /**\n     * The list of matching Regions\n     */\n    regions: Array<Region>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The name to request in the pagination query to get the next page.\n     */\n    page_at_name?: string;\n}\n\nexport interface ListRegionResponse extends _ListRegionResponse {\n    _builtin_original?: _ListRegionResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListRegionResponseImpl  implements _ListRegionResponse {\n    _builtin_original?: _ListRegionResponse = undefined;\n    public regions: Array<Region> ;\n    public limit: number ;\n    public page_at_name: string  | undefined ;\n    constructor(base: _ListRegionResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'regions') >= 0) {\n            if (base.regions) {\n                this.regions = base.regions.map((original) => newRegionImpl(original));\n            } else {\n                this.regions = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_name') >= 0) {\n            this.page_at_name = base.page_at_name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.regions !== undefined) {\n            for (const item of this.regions) {\n                if (item !== undefined && (item as RegionImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RegionImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListRegionResponseImpl(base: _ListRegionResponse): ListRegionResponseImpl {\n    return new ListRegionResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _RegionalFirewallRule { \n    /**\n     * the name of the rule\n     */\n    name?: string;\n    /**\n     * The action of the rule, supported actions:   - \\'allow\\' \n     */\n    action?: string;\n    /**\n     * domain(s) associated with the rule. For example, a firewall rule with action \\'allow\\' would be required to allow the domain\n     */\n    domains?: Array<string>;\n    /**\n     * subnets associated with the rule.\n     */\n    subnets?: Array<string>;\n    /**\n     * ports associated with the rule.\n     */\n    ports?: Array<number>;\n}\n\nexport interface RegionalFirewallRule extends _RegionalFirewallRule {\n    _builtin_original?: _RegionalFirewallRule;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RegionalFirewallRuleImpl  implements _RegionalFirewallRule {\n    _builtin_original?: _RegionalFirewallRule = undefined;\n    public name: string  | undefined ;\n    public action: string  | undefined ;\n    public domains: Array<string>  | undefined ;\n    public subnets: Array<string>  | undefined ;\n    public ports: Array<number>  | undefined ;\n    constructor(base: _RegionalFirewallRule) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'action') >= 0) {\n            this.action = base.action;\n        }\n        if (Object.keys(base).findIndex(key => key === 'domains') >= 0) {\n            this.domains = base.domains;\n        }\n        if (Object.keys(base).findIndex(key => key === 'subnets') >= 0) {\n            this.subnets = base.subnets;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ports') >= 0) {\n            this.ports = base.ports;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newRegionalFirewallRuleImpl(base: _RegionalFirewallRule): RegionalFirewallRuleImpl {\n    return new RegionalFirewallRuleImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RegionalFirewallRule, RegionalFirewallRule, RegionalFirewallRuleImpl, newRegionalFirewallRuleImpl } from './regionalFirewallRule';\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _RegionalLocation { \n    /**\n     * the name of the region or point of presence\n     */\n    name?: string;\n    /**\n     * The CNAME domain(s) associated with this location.\n     */\n    cname_domain_forwards?: Array<string>;\n    /**\n     * the domain(s) available for organisations for this location.\n     */\n    org_domains?: Array<string>;\n    /**\n     * firewall rules required for this location\n     */\n    firewall_rules?: Array<RegionalFirewallRule>;\n}\n\nexport interface RegionalLocation extends _RegionalLocation {\n    _builtin_original?: _RegionalLocation;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RegionalLocationImpl  implements _RegionalLocation {\n    _builtin_original?: _RegionalLocation = undefined;\n    public name: string  | undefined ;\n    public cname_domain_forwards: Array<string>  | undefined ;\n    public org_domains: Array<string>  | undefined ;\n    public firewall_rules: Array<RegionalFirewallRule>  | undefined ;\n    constructor(base: _RegionalLocation) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'cname_domain_forwards') >= 0) {\n            this.cname_domain_forwards = base.cname_domain_forwards;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_domains') >= 0) {\n            this.org_domains = base.org_domains;\n        }\n        if (Object.keys(base).findIndex(key => key === 'firewall_rules') >= 0) {\n            if (base.firewall_rules) {\n                this.firewall_rules = base.firewall_rules.map((original) => newRegionalFirewallRuleImpl(original));\n            } else {\n                this.firewall_rules = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.firewall_rules !== undefined) {\n            for (const item of this.firewall_rules) {\n                if (item !== undefined && (item as RegionalFirewallRuleImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RegionalFirewallRuleImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newRegionalLocationImpl(base: _RegionalLocation): RegionalLocationImpl {\n    return new RegionalLocationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RegionalLocation, RegionalLocation, RegionalLocationImpl, newRegionalLocationImpl } from './regionalLocation';\n\n\n/**\n * Response object for listing Location\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListRegionalLocationsResponse { \n    /**\n     * The list of matching Region Locations\n     */\n    regional_locations: Array<RegionalLocation>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The name to request in the pagination query to get the next page.\n     */\n    page_at_name?: string;\n}\n\nexport interface ListRegionalLocationsResponse extends _ListRegionalLocationsResponse {\n    _builtin_original?: _ListRegionalLocationsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListRegionalLocationsResponseImpl  implements _ListRegionalLocationsResponse {\n    _builtin_original?: _ListRegionalLocationsResponse = undefined;\n    public regional_locations: Array<RegionalLocation> ;\n    public limit: number ;\n    public page_at_name: string  | undefined ;\n    constructor(base: _ListRegionalLocationsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'regional_locations') >= 0) {\n            if (base.regional_locations) {\n                this.regional_locations = base.regional_locations.map((original) => newRegionalLocationImpl(original));\n            } else {\n                this.regional_locations = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_name') >= 0) {\n            this.page_at_name = base.page_at_name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.regional_locations !== undefined) {\n            for (const item of this.regional_locations) {\n                if (item !== undefined && (item as RegionalLocationImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RegionalLocationImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListRegionalLocationsResponseImpl(base: _ListRegionalLocationsResponse): ListRegionalLocationsResponseImpl {\n    return new ListRegionalLocationsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourceTypeEnum, ResourceTypeEnum, ResourceTypeEnumImpl, newResourceTypeEnumImpl } from './resourceTypeEnum';\nimport { _ResourceMember, ResourceMember, ResourceMemberImpl, newResourceMemberImpl } from './resourceMember';\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _ResourceGroup { \n    /**\n     * The unique ID of the resource group\n     */\n    id?: string;\n    /**\n     * The unique ID of the organisation which owns this Resource Group\n     */\n    org_id?: string;\n    resource_type?: ResourceTypeEnum;\n    /**\n     * A list of resources that are contained or associated with this Resource.\n     */\n    resource_members?: Array<ResourceMember>;\n}\n\nexport interface ResourceGroup extends _ResourceGroup {\n    _builtin_original?: _ResourceGroup;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ResourceGroupImpl  implements _ResourceGroup {\n    _builtin_original?: _ResourceGroup = undefined;\n    public id: string  | undefined ;\n    public org_id: string  | undefined ;\n    public resource_type: ResourceTypeEnum  | undefined ;\n    public resource_members: Array<ResourceMember>  | undefined ;\n    constructor(base: _ResourceGroup) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_type') >= 0) {\n            this.resource_type = base.resource_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_members') >= 0) {\n            if (base.resource_members) {\n                this.resource_members = base.resource_members.map((original) => newResourceMemberImpl(original));\n            } else {\n                this.resource_members = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.resource_members !== undefined) {\n            for (const item of this.resource_members) {\n                if (item !== undefined && (item as ResourceMemberImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ResourceMemberImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newResourceGroupImpl(base: _ResourceGroup): ResourceGroupImpl {\n    return new ResourceGroupImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourceGroup, ResourceGroup, ResourceGroupImpl, newResourceGroupImpl } from './resourceGroup';\n\n\n/**\n * Response object for listing Resource Groups\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListResourceGroupsResponse { \n    /**\n     * The list of matching resource groups\n     */\n    resource_groups: Array<ResourceGroup>;\n}\n\nexport interface ListResourceGroupsResponse extends _ListResourceGroupsResponse {\n    _builtin_original?: _ListResourceGroupsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListResourceGroupsResponseImpl  implements _ListResourceGroupsResponse {\n    _builtin_original?: _ListResourceGroupsResponse = undefined;\n    public resource_groups: Array<ResourceGroup> ;\n    constructor(base: _ListResourceGroupsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'resource_groups') >= 0) {\n            if (base.resource_groups) {\n                this.resource_groups = base.resource_groups.map((original) => newResourceGroupImpl(original));\n            } else {\n                this.resource_groups = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.resource_groups !== undefined) {\n            for (const item of this.resource_groups) {\n                if (item !== undefined && (item as ResourceGroupImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ResourceGroupImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListResourceGroupsResponseImpl(base: _ListResourceGroupsResponse): ListResourceGroupsResponseImpl {\n    return new ListResourceGroupsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourcePermissionSpec, ResourcePermissionSpec, ResourcePermissionSpecImpl, newResourcePermissionSpecImpl } from './resourcePermissionSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\n\n\n/**\n * A ResourcePermission describes a user\\'s permission (aka role) for a specific resource in a given organisation. The meaning of a permission for a given resource depends on the type of the resource itself, but generally the permission will allow interaction with the system described by the resource. For example, a permission related to a FileShare resource will grant the user permission to interact with the files exposed by that particular file share. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ResourcePermission { \n    metadata?: MetadataWithId;\n    spec: ResourcePermissionSpec;\n}\n\nexport interface ResourcePermission extends _ResourcePermission {\n    _builtin_original?: _ResourcePermission;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ResourcePermissionImpl  implements _ResourcePermission {\n    _builtin_original?: _ResourcePermission = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: ResourcePermissionSpec ;\n    constructor(base: _ResourcePermission) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newResourcePermissionImpl(base: _ResourcePermission): ResourcePermissionImpl {\n    return new ResourcePermissionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourcePermission, ResourcePermission, ResourcePermissionImpl, newResourcePermissionImpl } from './resourcePermission';\n\n\n/**\n * Response object for listing ResourcePermissions.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListResourcePermissionsResponse { \n    /**\n     * The matching ResourcePermission objects.\n     */\n    resource_permissions: Array<ResourcePermission>;\n    /**\n     * Limit on the number of rows in the response.\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n}\n\nexport interface ListResourcePermissionsResponse extends _ListResourcePermissionsResponse {\n    _builtin_original?: _ListResourcePermissionsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListResourcePermissionsResponseImpl  implements _ListResourcePermissionsResponse {\n    _builtin_original?: _ListResourcePermissionsResponse = undefined;\n    public resource_permissions: Array<ResourcePermission> ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _ListResourcePermissionsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'resource_permissions') >= 0) {\n            if (base.resource_permissions) {\n                this.resource_permissions = base.resource_permissions.map((original) => newResourcePermissionImpl(original));\n            } else {\n                this.resource_permissions = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.resource_permissions !== undefined) {\n            for (const item of this.resource_permissions) {\n                if (item !== undefined && (item as ResourcePermissionImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ResourcePermissionImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListResourcePermissionsResponseImpl(base: _ListResourcePermissionsResponse): ListResourcePermissionsResponseImpl {\n    return new ListResourcePermissionsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _ResourceRoleSpec, ResourceRoleSpec, ResourceRoleSpecImpl, newResourceRoleSpecImpl } from './resourceRoleSpec';\n\n\n/**\n * A ResourceRole describes a role that can be potentially assigned to a user for a type of resource. The set of roles for a type of resource define the permision model for that resource type. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ResourceRole { \n    metadata?: MetadataWithId;\n    spec: ResourceRoleSpec;\n}\n\nexport interface ResourceRole extends _ResourceRole {\n    _builtin_original?: _ResourceRole;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ResourceRoleImpl  implements _ResourceRole {\n    _builtin_original?: _ResourceRole = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: ResourceRoleSpec ;\n    constructor(base: _ResourceRole) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newResourceRoleImpl(base: _ResourceRole): ResourceRoleImpl {\n    return new ResourceRoleImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourceRole, ResourceRole, ResourceRoleImpl, newResourceRoleImpl } from './resourceRole';\n\n\n/**\n * Response object for listing ResourceRoles.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListResourceRolesResponse { \n    /**\n     * The matching ResourceRole objects.\n     */\n    resource_roles: Array<ResourceRole>;\n    /**\n     * Limit on the number of rows in the response.\n     */\n    limit: number;\n}\n\nexport interface ListResourceRolesResponse extends _ListResourceRolesResponse {\n    _builtin_original?: _ListResourceRolesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListResourceRolesResponseImpl  implements _ListResourceRolesResponse {\n    _builtin_original?: _ListResourceRolesResponse = undefined;\n    public resource_roles: Array<ResourceRole> ;\n    public limit: number ;\n    constructor(base: _ListResourceRolesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'resource_roles') >= 0) {\n            if (base.resource_roles) {\n                this.resource_roles = base.resource_roles.map((original) => newResourceRoleImpl(original));\n            } else {\n                this.resource_roles = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.resource_roles !== undefined) {\n            for (const item of this.resource_roles) {\n                if (item !== undefined && (item as ResourceRoleImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ResourceRoleImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListResourceRolesResponseImpl(base: _ListResourceRolesResponse): ListResourceRolesResponseImpl {\n    return new ListResourceRolesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _ResourceSpec, ResourceSpec, ResourceSpecImpl, newResourceSpecImpl } from './resourceSpec';\nimport { _ResourceStatus, ResourceStatus, ResourceStatusImpl, newResourceStatusImpl } from './resourceStatus';\n\n\n/**\n * A resource in the system. A resource represents something with which a user can interact. Users may be granted permission to access a resource. Each resource has a unique permission scheme, which controls how a user may access it when granted the associated role. Resources are hierarchical, meaning that one resource may be a child of another. When a parent resources is deleted, all its children are deleted. A user with a role in a parent resource has the same role in its child resources, and so on, recursively.  Each resource is uniquely identified by `metadata.id`. That identifier matches the identifier for the resource in its specific collection (e.g. /v2/applications, /v1/file_shares, etc) \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Resource { \n    metadata?: MetadataWithId;\n    spec: ResourceSpec;\n    status?: ResourceStatus;\n}\n\nexport interface Resource extends _Resource {\n    _builtin_original?: _Resource;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ResourceImpl  implements _Resource {\n    _builtin_original?: _Resource = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: ResourceSpec ;\n    public status: ResourceStatus  | undefined ;\n    constructor(base: _Resource) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newResourceImpl(base: _Resource): ResourceImpl {\n    return new ResourceImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PageInfo, PageInfo, PageInfoImpl, newPageInfoImpl } from './pageInfo';\nimport { _Resource, Resource, ResourceImpl, newResourceImpl } from './resource';\n\n\n/**\n * Response object for listing Resources\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListResourcesResponse { \n    /**\n     * The list of matching resources\n     */\n    resources: Array<Resource>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n    page_info?: PageInfo;\n}\n\nexport interface ListResourcesResponse extends _ListResourcesResponse {\n    _builtin_original?: _ListResourcesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListResourcesResponseImpl  implements _ListResourcesResponse {\n    _builtin_original?: _ListResourcesResponse = undefined;\n    public resources: Array<Resource> ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    public page_info: PageInfo  | undefined ;\n    constructor(base: _ListResourcesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'resources') >= 0) {\n            if (base.resources) {\n                this.resources = base.resources.map((original) => newResourceImpl(original));\n            } else {\n                this.resources = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_info') >= 0) {\n            this.page_info = base.page_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.resources !== undefined) {\n            for (const item of this.resources) {\n                if (item !== undefined && (item as ResourceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ResourceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListResourcesResponseImpl(base: _ListResourcesResponse): ListResourcesResponseImpl {\n    return new ListResourcesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RoleToRuleEntrySpec, RoleToRuleEntrySpec, RoleToRuleEntrySpecImpl, newRoleToRuleEntrySpecImpl } from './roleToRuleEntrySpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\n\n\n/**\n * Associates a rule with a role. The association may either be to include the rule in the role\\'s effective list of rules, or it may be to exclude it. If the rule is excluded, then if an included role itself includes this rule, the rule will not be included in the final list of rules for this role. A rule can be included in a role only once. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RoleToRuleEntry { \n    metadata?: MetadataWithId;\n    spec: RoleToRuleEntrySpec;\n}\n\nexport interface RoleToRuleEntry extends _RoleToRuleEntry {\n    _builtin_original?: _RoleToRuleEntry;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RoleToRuleEntryImpl  implements _RoleToRuleEntry {\n    _builtin_original?: _RoleToRuleEntry = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: RoleToRuleEntrySpec ;\n    constructor(base: _RoleToRuleEntry) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newRoleToRuleEntryImpl(base: _RoleToRuleEntry): RoleToRuleEntryImpl {\n    return new RoleToRuleEntryImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RoleToRuleEntry, RoleToRuleEntry, RoleToRuleEntryImpl, newRoleToRuleEntryImpl } from './roleToRuleEntry';\n\n\n/**\n * The response object for a `list_role_to_rule_entries` operation. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListRoleToRuleEntries { \n    /**\n     * The maximum number of netries that could be returned in the response. \n     */\n    limit: number;\n    /**\n     * The entries matching the search criteria\n     */\n    role_to_rule_entries?: Array<RoleToRuleEntry>;\n}\n\nexport interface ListRoleToRuleEntries extends _ListRoleToRuleEntries {\n    _builtin_original?: _ListRoleToRuleEntries;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListRoleToRuleEntriesImpl  implements _ListRoleToRuleEntries {\n    _builtin_original?: _ListRoleToRuleEntries = undefined;\n    public limit: number ;\n    public role_to_rule_entries: Array<RoleToRuleEntry>  | undefined ;\n    constructor(base: _ListRoleToRuleEntries) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'role_to_rule_entries') >= 0) {\n            if (base.role_to_rule_entries) {\n                this.role_to_rule_entries = base.role_to_rule_entries.map((original) => newRoleToRuleEntryImpl(original));\n            } else {\n                this.role_to_rule_entries = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.role_to_rule_entries !== undefined) {\n            for (const item of this.role_to_rule_entries) {\n                if (item !== undefined && (item as RoleToRuleEntryImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RoleToRuleEntryImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListRoleToRuleEntriesImpl(base: _ListRoleToRuleEntries): ListRoleToRuleEntriesImpl {\n    return new ListRoleToRuleEntriesImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _RoleSpec, RoleSpec, RoleSpecImpl, newRoleSpecImpl } from './roleSpec';\n\n\n/**\n * A Role collects a set of rules together. A user with a given role has the permissions granted by the rules it collects. A Role can include other roles to include the rules they collect into its own. Typically a Role represents a functional role within an Organisation. E.g. administrator, auditor, etc. A role is globally identified by its ID. Within an application, its name must be unique. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RoleV2 { \n    metadata?: MetadataWithId;\n    spec: RoleSpec;\n}\n\nexport interface RoleV2 extends _RoleV2 {\n    _builtin_original?: _RoleV2;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RoleV2Impl  implements _RoleV2 {\n    _builtin_original?: _RoleV2 = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: RoleSpec ;\n    constructor(base: _RoleV2) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newRoleV2Impl(base: _RoleV2): RoleV2Impl {\n    return new RoleV2Impl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RoleV2, RoleV2, RoleV2Impl, newRoleV2Impl } from './roleV2';\n\n\n/**\n * The response object for a `list_roles` operation.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListRoles { \n    /**\n     * The maximum number of Roles that could be returned in the response. \n     */\n    limit: number;\n    /**\n     * The roles matching the search criteria\n     */\n    roles?: Array<RoleV2>;\n}\n\nexport interface ListRoles extends _ListRoles {\n    _builtin_original?: _ListRoles;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListRolesImpl  implements _ListRoles {\n    _builtin_original?: _ListRoles = undefined;\n    public limit: number ;\n    public roles: Array<RoleV2>  | undefined ;\n    constructor(base: _ListRoles) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'roles') >= 0) {\n            if (base.roles) {\n                this.roles = base.roles.map((original) => newRoleV2Impl(original));\n            } else {\n                this.roles = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.roles !== undefined) {\n            for (const item of this.roles) {\n                if (item !== undefined && (item as RoleV2Impl)._remove_builtin_extensions !== undefined) {\n                    (item as RoleV2Impl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListRolesImpl(base: _ListRoles): ListRolesImpl {\n    return new ListRolesImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RuleV2, RuleV2, RuleV2Impl, newRuleV2Impl } from './ruleV2';\n\n\n/**\n * The response object for a `list_rules` operation. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListRules { \n    /**\n     * The maximum number of Rules that could be returned in the response. \n     */\n    limit: number;\n    /**\n     * The rules matching the search criteria\n     */\n    rules?: Array<RuleV2>;\n}\n\nexport interface ListRules extends _ListRules {\n    _builtin_original?: _ListRules;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListRulesImpl  implements _ListRules {\n    _builtin_original?: _ListRules = undefined;\n    public limit: number ;\n    public rules: Array<RuleV2>  | undefined ;\n    constructor(base: _ListRules) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'rules') >= 0) {\n            if (base.rules) {\n                this.rules = base.rules.map((original) => newRuleV2Impl(original));\n            } else {\n                this.rules = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.rules !== undefined) {\n            for (const item of this.rules) {\n                if (item !== undefined && (item as RuleV2Impl)._remove_builtin_extensions !== undefined) {\n                    (item as RuleV2Impl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListRulesImpl(base: _ListRules): ListRulesImpl {\n    return new ListRulesImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PageInfo, PageInfo, PageInfoImpl, newPageInfoImpl } from './pageInfo';\nimport { _SSHResource, SSHResource, SSHResourceImpl, newSSHResourceImpl } from './sSHResource';\n\n\n/**\n * Response object for listing SSHResource objects.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListSSHResourcesResponse { \n    /**\n     * List of SSHResource objects.\n     */\n    ssh_resources?: Array<SSHResource>;\n    /**\n     * The maximum number of records returned in the response.\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n    page_info?: PageInfo;\n}\n\nexport interface ListSSHResourcesResponse extends _ListSSHResourcesResponse {\n    _builtin_original?: _ListSSHResourcesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListSSHResourcesResponseImpl  implements _ListSSHResourcesResponse {\n    _builtin_original?: _ListSSHResourcesResponse = undefined;\n    public ssh_resources: Array<SSHResource>  | undefined ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    public page_info: PageInfo  | undefined ;\n    constructor(base: _ListSSHResourcesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'ssh_resources') >= 0) {\n            if (base.ssh_resources) {\n                this.ssh_resources = base.ssh_resources.map((original) => newSSHResourceImpl(original));\n            } else {\n                this.ssh_resources = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_info') >= 0) {\n            this.page_info = base.page_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.ssh_resources !== undefined) {\n            for (const item of this.ssh_resources) {\n                if (item !== undefined && (item as SSHResourceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as SSHResourceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListSSHResourcesResponseImpl(base: _ListSSHResourcesResponse): ListSSHResourcesResponseImpl {\n    return new ListSSHResourcesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _SecureAgentSpec, SecureAgentSpec, SecureAgentSpecImpl, newSecureAgentSpecImpl } from './secureAgentSpec';\nimport { _SecureAgentStatus, SecureAgentStatus, SecureAgentStatusImpl, newSecureAgentStatusImpl } from './secureAgentStatus';\n\n\n/**\n * The secure agent. This determines how an agent can expose internal applications to the public internet\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SecureAgent { \n    metadata?: MetadataWithId;\n    spec: SecureAgentSpec;\n    status?: SecureAgentStatus;\n}\n\nexport interface SecureAgent extends _SecureAgent {\n    _builtin_original?: _SecureAgent;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SecureAgentImpl  implements _SecureAgent {\n    _builtin_original?: _SecureAgent = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: SecureAgentSpec ;\n    public status: SecureAgentStatus  | undefined ;\n    constructor(base: _SecureAgent) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSecureAgentImpl(base: _SecureAgent): SecureAgentImpl {\n    return new SecureAgentImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _SecureAgent, SecureAgent, SecureAgentImpl, newSecureAgentImpl } from './secureAgent';\n\n\n/**\n * Response object for the list of secure agent objects\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListSecureAgentResponse { \n    /**\n     * The matching secure agent  objects\n     */\n    secure_agents: Array<SecureAgent>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListSecureAgentResponse extends _ListSecureAgentResponse {\n    _builtin_original?: _ListSecureAgentResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListSecureAgentResponseImpl  implements _ListSecureAgentResponse {\n    _builtin_original?: _ListSecureAgentResponse = undefined;\n    public secure_agents: Array<SecureAgent> ;\n    public limit: number ;\n    constructor(base: _ListSecureAgentResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'secure_agents') >= 0) {\n            if (base.secure_agents) {\n                this.secure_agents = base.secure_agents.map((original) => newSecureAgentImpl(original));\n            } else {\n                this.secure_agents = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.secure_agents !== undefined) {\n            for (const item of this.secure_agents) {\n                if (item !== undefined && (item as SecureAgentImpl)._remove_builtin_extensions !== undefined) {\n                    (item as SecureAgentImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListSecureAgentResponseImpl(base: _ListSecureAgentResponse): ListSecureAgentResponseImpl {\n    return new ListSecureAgentResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _ServiceAccountSpec, ServiceAccountSpec, ServiceAccountSpecImpl, newServiceAccountSpecImpl } from './serviceAccountSpec';\nimport { _ServiceAccountStatus, ServiceAccountStatus, ServiceAccountStatusImpl, newServiceAccountStatusImpl } from './serviceAccountStatus';\n\n\n/**\n * A service account is an account intended to represent a non-human user that needs to authenticate and be authorized to access data in the Agilicus API.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ServiceAccount { \n    metadata?: MetadataWithId;\n    spec: ServiceAccountSpec;\n    status?: ServiceAccountStatus;\n}\n\nexport interface ServiceAccount extends _ServiceAccount {\n    _builtin_original?: _ServiceAccount;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ServiceAccountImpl  implements _ServiceAccount {\n    _builtin_original?: _ServiceAccount = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: ServiceAccountSpec ;\n    public status: ServiceAccountStatus  | undefined ;\n    constructor(base: _ServiceAccount) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newServiceAccountImpl(base: _ServiceAccount): ServiceAccountImpl {\n    return new ServiceAccountImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ServiceAccount, ServiceAccount, ServiceAccountImpl, newServiceAccountImpl } from './serviceAccount';\n\n\n/**\n * Response object for the list of ServiceAccount\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListServiceAccountResponse { \n    /**\n     * The matching ServiceAccount objects\n     */\n    service_accounts: Array<ServiceAccount>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListServiceAccountResponse extends _ListServiceAccountResponse {\n    _builtin_original?: _ListServiceAccountResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListServiceAccountResponseImpl  implements _ListServiceAccountResponse {\n    _builtin_original?: _ListServiceAccountResponse = undefined;\n    public service_accounts: Array<ServiceAccount> ;\n    public limit: number ;\n    constructor(base: _ListServiceAccountResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'service_accounts') >= 0) {\n            if (base.service_accounts) {\n                this.service_accounts = base.service_accounts.map((original) => newServiceAccountImpl(original));\n            } else {\n                this.service_accounts = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.service_accounts !== undefined) {\n            for (const item of this.service_accounts) {\n                if (item !== undefined && (item as ServiceAccountImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ServiceAccountImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListServiceAccountResponseImpl(base: _ListServiceAccountResponse): ListServiceAccountResponseImpl {\n    return new ListServiceAccountResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PageInfo, PageInfo, PageInfoImpl, newPageInfoImpl } from './pageInfo';\nimport { _ServiceForwarder, ServiceForwarder, ServiceForwarderImpl, newServiceForwarderImpl } from './serviceForwarder';\n\n\n/**\n * Response object for listing ServiceForwarder\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListServiceForwardersResponse { \n    /**\n     * List of ServiceForwarder\n     */\n    service_forwarders?: Array<ServiceForwarder>;\n    /**\n     * The maximum number of records returned in the response.\n     */\n    limit: number;\n    page_info?: PageInfo;\n}\n\nexport interface ListServiceForwardersResponse extends _ListServiceForwardersResponse {\n    _builtin_original?: _ListServiceForwardersResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListServiceForwardersResponseImpl  implements _ListServiceForwardersResponse {\n    _builtin_original?: _ListServiceForwardersResponse = undefined;\n    public service_forwarders: Array<ServiceForwarder>  | undefined ;\n    public limit: number ;\n    public page_info: PageInfo  | undefined ;\n    constructor(base: _ListServiceForwardersResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'service_forwarders') >= 0) {\n            if (base.service_forwarders) {\n                this.service_forwarders = base.service_forwarders.map((original) => newServiceForwarderImpl(original));\n            } else {\n                this.service_forwarders = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_info') >= 0) {\n            this.page_info = base.page_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.service_forwarders !== undefined) {\n            for (const item of this.service_forwarders) {\n                if (item !== undefined && (item as ServiceForwarderImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ServiceForwarderImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListServiceForwardersResponseImpl(base: _ListServiceForwardersResponse): ListServiceForwardersResponseImpl {\n    return new ListServiceForwardersResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _SessionsSpec, SessionsSpec, SessionsSpecImpl, newSessionsSpecImpl } from './sessionsSpec';\nimport { _SessionStatus, SessionStatus, SessionStatusImpl, newSessionStatusImpl } from './sessionStatus';\n\n\n/**\n * The object representing the login session state for a user. A session is created when the user authenticates with an upstream identity provider and ends when the user ends the session or when the session expires. A session contains information about a user\\'s login with the Agilicus system. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Session { \n    metadata?: MetadataWithId;\n    spec: SessionsSpec;\n    status?: SessionStatus;\n}\n\nexport interface Session extends _Session {\n    _builtin_original?: _Session;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SessionImpl  implements _Session {\n    _builtin_original?: _Session = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: SessionsSpec ;\n    public status: SessionStatus  | undefined ;\n    constructor(base: _Session) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSessionImpl(base: _Session): SessionImpl {\n    return new SessionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Session, Session, SessionImpl, newSessionImpl } from './session';\n\n\n/**\n * Response object for the list of sessions\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListSessionsResponse { \n    /**\n     * The matching Session objects\n     */\n    sessions: Array<Session>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The earliest created time on the current page. A value of \\\"\\\" is the start of the first page. This is typically combined with other pagination parameters to sub-paginate data that has too many results for the primary pagination key. \n     */\n    readonly previous_created_time?: Date;\n    /**\n     * The earliest created time on the next page. This is typically combined with other pagination parameters to sub-paginate data that has too many results for the primary pagination key. \n     */\n    readonly page_at_created_time?: Date;\n    /**\n     * The first user_id on the current page. A value of \\\"\\\" is the start of the first page.\n     */\n    previous_user_id?: string;\n    /**\n     * The user_id to page at.\n     */\n    page_at_user_id?: string;\n}\n\nexport interface ListSessionsResponse extends _ListSessionsResponse {\n    _builtin_original?: _ListSessionsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListSessionsResponseImpl  implements _ListSessionsResponse {\n    _builtin_original?: _ListSessionsResponse = undefined;\n    public sessions: Array<Session> ;\n    public limit: number ;\n    public readonly previous_created_time: Date  | undefined ;\n    public readonly page_at_created_time: Date  | undefined ;\n    public previous_user_id: string  | undefined ;\n    public page_at_user_id: string  | undefined ;\n    constructor(base: _ListSessionsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'sessions') >= 0) {\n            if (base.sessions) {\n                this.sessions = base.sessions.map((original) => newSessionImpl(original));\n            } else {\n                this.sessions = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'previous_created_time') >= 0) {\n            this.previous_created_time = base.previous_created_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_created_time') >= 0) {\n            this.page_at_created_time = base.page_at_created_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'previous_user_id') >= 0) {\n            this.previous_user_id = base.previous_user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_user_id') >= 0) {\n            this.page_at_user_id = base.page_at_user_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.sessions !== undefined) {\n            for (const item of this.sessions) {\n                if (item !== undefined && (item as SessionImpl)._remove_builtin_extensions !== undefined) {\n                    (item as SessionImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListSessionsResponseImpl(base: _ListSessionsResponse): ListSessionsResponseImpl {\n    return new ListSessionsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneRulePolicySpec, StandaloneRulePolicySpec, StandaloneRulePolicySpecImpl, newStandaloneRulePolicySpecImpl } from './standaloneRulePolicySpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\n\n\n/**\n * Defines the policy for a subset of the system by providing an aggregation point for the rules primitives which make up that policy. The main purpose of the StandaloneRulePolicy is to define ownership by linking a policy to an external component of the system (e.g. a PolicyTemplate or Resource), which allows for easily querying related rules primitives and performing lifecycle tasks like garbage collection.  The link between the StandaloneRulePolicy and the external object is defined by the following five-tuple:   - object_type   - object_id   - policy_class   - policy_name   - org_id  Genernally the object_type and object_id are set together, as are policy_class and policy_name. For example, the existing default \\'firewall rules\\' for an application called X could have:  - object_type: application  - object_id: application.id  - policy_class: null  - policy_name: null Whereas a policy template called Y for that same application would have:  - object_type: application  - object_id: application.id  - policy_class: prefix_redirect  - policy_name: Y And a global multifactor policy template called Z would have:  - object_type: null  - object_id: null  - policy_class: mfa  - policy_name: Z This facilitiates the following operations, for example:   - Find all RuleSets for a given resource   - Find all RulePolicies for a given policy template type (aka find all instances of that policy)   - Find all RuleTrees for a given PolicyTemplate instance   - Delete all primitives associated with a PolicyTemplate instance   - Delete all primitives associated with a resource \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRulePolicy { \n    metadata?: MetadataWithId;\n    spec: StandaloneRulePolicySpec;\n}\n\nexport interface StandaloneRulePolicy extends _StandaloneRulePolicy {\n    _builtin_original?: _StandaloneRulePolicy;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRulePolicyImpl  implements _StandaloneRulePolicy {\n    _builtin_original?: _StandaloneRulePolicy = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: StandaloneRulePolicySpec ;\n    constructor(base: _StandaloneRulePolicy) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneRulePolicyImpl(base: _StandaloneRulePolicy): StandaloneRulePolicyImpl {\n    return new StandaloneRulePolicyImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneRulePolicy, StandaloneRulePolicy, StandaloneRulePolicyImpl, newStandaloneRulePolicyImpl } from './standaloneRulePolicy';\n\n\n/**\n * Response object for StandaloneRulePolicy list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListStandaloneRulePoliciesResponse { \n    /**\n     * List of StandaloneRulePolicies\n     */\n    standalone_rule_policies: Array<StandaloneRulePolicy>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListStandaloneRulePoliciesResponse extends _ListStandaloneRulePoliciesResponse {\n    _builtin_original?: _ListStandaloneRulePoliciesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListStandaloneRulePoliciesResponseImpl  implements _ListStandaloneRulePoliciesResponse {\n    _builtin_original?: _ListStandaloneRulePoliciesResponse = undefined;\n    public standalone_rule_policies: Array<StandaloneRulePolicy> ;\n    public limit: number ;\n    constructor(base: _ListStandaloneRulePoliciesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'standalone_rule_policies') >= 0) {\n            if (base.standalone_rule_policies) {\n                this.standalone_rule_policies = base.standalone_rule_policies.map((original) => newStandaloneRulePolicyImpl(original));\n            } else {\n                this.standalone_rule_policies = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.standalone_rule_policies !== undefined) {\n            for (const item of this.standalone_rule_policies) {\n                if (item !== undefined && (item as StandaloneRulePolicyImpl)._remove_builtin_extensions !== undefined) {\n                    (item as StandaloneRulePolicyImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListStandaloneRulePoliciesResponseImpl(base: _ListStandaloneRulePoliciesResponse): ListStandaloneRulePoliciesResponseImpl {\n    return new ListStandaloneRulePoliciesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneRuleTreeStatus, StandaloneRuleTreeStatus, StandaloneRuleTreeStatusImpl, newStandaloneRuleTreeStatusImpl } from './standaloneRuleTreeStatus';\nimport { _StandaloneRuleTreeSpec, StandaloneRuleTreeSpec, StandaloneRuleTreeSpecImpl, newStandaloneRuleTreeSpecImpl } from './standaloneRuleTreeSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\n\n\n/**\n * Builds a tree of rules evaluated by the rule engine top-down, using a preorder depth first search. The engine only evaluates child nodes if the containing node\\'s rules evaluate to true. At that point, the rules engine evaluates the child and its siblings in priority order, stopping on the first match. The separation the rule definitions (StandaloneRule) from how they are related (StandaloneRuleTree), allows for reuse of basic building block rules in various contexts. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRuleTree { \n    metadata?: MetadataWithId;\n    spec: StandaloneRuleTreeSpec;\n    status?: StandaloneRuleTreeStatus;\n}\n\nexport interface StandaloneRuleTree extends _StandaloneRuleTree {\n    _builtin_original?: _StandaloneRuleTree;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRuleTreeImpl  implements _StandaloneRuleTree {\n    _builtin_original?: _StandaloneRuleTree = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: StandaloneRuleTreeSpec ;\n    public status: StandaloneRuleTreeStatus  | undefined ;\n    constructor(base: _StandaloneRuleTree) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneRuleTreeImpl(base: _StandaloneRuleTree): StandaloneRuleTreeImpl {\n    return new StandaloneRuleTreeImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneRuleTree, StandaloneRuleTree, StandaloneRuleTreeImpl, newStandaloneRuleTreeImpl } from './standaloneRuleTree';\n\n\n/**\n * Response object for listing StandaloneRuleTree objects.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListStandaloneRuleTreesResponse { \n    /**\n     * List of StandaloneRuleTree objects\n     */\n    standalone_rule_trees: Array<StandaloneRuleTree>;\n    /**\n     * The maximum number of records returned in the response.\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n}\n\nexport interface ListStandaloneRuleTreesResponse extends _ListStandaloneRuleTreesResponse {\n    _builtin_original?: _ListStandaloneRuleTreesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListStandaloneRuleTreesResponseImpl  implements _ListStandaloneRuleTreesResponse {\n    _builtin_original?: _ListStandaloneRuleTreesResponse = undefined;\n    public standalone_rule_trees: Array<StandaloneRuleTree> ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _ListStandaloneRuleTreesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'standalone_rule_trees') >= 0) {\n            if (base.standalone_rule_trees) {\n                this.standalone_rule_trees = base.standalone_rule_trees.map((original) => newStandaloneRuleTreeImpl(original));\n            } else {\n                this.standalone_rule_trees = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.standalone_rule_trees !== undefined) {\n            for (const item of this.standalone_rule_trees) {\n                if (item !== undefined && (item as StandaloneRuleTreeImpl)._remove_builtin_extensions !== undefined) {\n                    (item as StandaloneRuleTreeImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListStandaloneRuleTreesResponseImpl(base: _ListStandaloneRuleTreesResponse): ListStandaloneRuleTreesResponseImpl {\n    return new ListStandaloneRuleTreesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneRule, StandaloneRule, StandaloneRuleImpl, newStandaloneRuleImpl } from './standaloneRule';\n\n\n/**\n * Response object for listing StandaloneRule objects.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListStandaloneRulesResponse { \n    /**\n     * List of StandaloneRule objects\n     */\n    standalone_rules: Array<StandaloneRule>;\n    /**\n     * The maximum number of records returned in the response.\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n}\n\nexport interface ListStandaloneRulesResponse extends _ListStandaloneRulesResponse {\n    _builtin_original?: _ListStandaloneRulesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListStandaloneRulesResponseImpl  implements _ListStandaloneRulesResponse {\n    _builtin_original?: _ListStandaloneRulesResponse = undefined;\n    public standalone_rules: Array<StandaloneRule> ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _ListStandaloneRulesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'standalone_rules') >= 0) {\n            if (base.standalone_rules) {\n                this.standalone_rules = base.standalone_rules.map((original) => newStandaloneRuleImpl(original));\n            } else {\n                this.standalone_rules = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.standalone_rules !== undefined) {\n            for (const item of this.standalone_rules) {\n                if (item !== undefined && (item as StandaloneRuleImpl)._remove_builtin_extensions !== undefined) {\n                    (item as StandaloneRuleImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListStandaloneRulesResponseImpl(base: _ListStandaloneRulesResponse): ListStandaloneRulesResponseImpl {\n    return new ListStandaloneRulesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneRulesetBundleSpec, StandaloneRulesetBundleSpec, StandaloneRulesetBundleSpecImpl, newStandaloneRulesetBundleSpecImpl } from './standaloneRulesetBundleSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _StandaloneRulesetBundleStatus, StandaloneRulesetBundleStatus, StandaloneRulesetBundleStatusImpl, newStandaloneRulesetBundleStatusImpl } from './standaloneRulesetBundleStatus';\n\n\n/**\n * A container for StandaloneRulesetLabels. This allows retrieval and management of a collection of StandaloneRulesets associated with labels. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRulesetBundle { \n    metadata?: MetadataWithId;\n    spec: StandaloneRulesetBundleSpec;\n    status?: StandaloneRulesetBundleStatus;\n}\n\nexport interface StandaloneRulesetBundle extends _StandaloneRulesetBundle {\n    _builtin_original?: _StandaloneRulesetBundle;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRulesetBundleImpl  implements _StandaloneRulesetBundle {\n    _builtin_original?: _StandaloneRulesetBundle = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: StandaloneRulesetBundleSpec ;\n    public status: StandaloneRulesetBundleStatus  | undefined ;\n    constructor(base: _StandaloneRulesetBundle) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneRulesetBundleImpl(base: _StandaloneRulesetBundle): StandaloneRulesetBundleImpl {\n    return new StandaloneRulesetBundleImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneRulesetBundle, StandaloneRulesetBundle, StandaloneRulesetBundleImpl, newStandaloneRulesetBundleImpl } from './standaloneRulesetBundle';\n\n\n/**\n * Response object for StandaloneRulesetBundle list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListStandaloneRulesetBundlesResponse { \n    /**\n     * List of StandaloneRulesetBundle\n     */\n    standalone_ruleset_bundles: Array<StandaloneRulesetBundle>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n    /**\n     * The entity tag (etag) associated with standalone_ruleset_bundles.\n     */\n    standalone_ruleset_bundles_etag?: string;\n}\n\nexport interface ListStandaloneRulesetBundlesResponse extends _ListStandaloneRulesetBundlesResponse {\n    _builtin_original?: _ListStandaloneRulesetBundlesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListStandaloneRulesetBundlesResponseImpl  implements _ListStandaloneRulesetBundlesResponse {\n    _builtin_original?: _ListStandaloneRulesetBundlesResponse = undefined;\n    public standalone_ruleset_bundles: Array<StandaloneRulesetBundle> ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    public standalone_ruleset_bundles_etag: string  | undefined ;\n    constructor(base: _ListStandaloneRulesetBundlesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'standalone_ruleset_bundles') >= 0) {\n            if (base.standalone_ruleset_bundles) {\n                this.standalone_ruleset_bundles = base.standalone_ruleset_bundles.map((original) => newStandaloneRulesetBundleImpl(original));\n            } else {\n                this.standalone_ruleset_bundles = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'standalone_ruleset_bundles_etag') >= 0) {\n            this.standalone_ruleset_bundles_etag = base.standalone_ruleset_bundles_etag;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.standalone_ruleset_bundles !== undefined) {\n            for (const item of this.standalone_ruleset_bundles) {\n                if (item !== undefined && (item as StandaloneRulesetBundleImpl)._remove_builtin_extensions !== undefined) {\n                    (item as StandaloneRulesetBundleImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListStandaloneRulesetBundlesResponseImpl(base: _ListStandaloneRulesetBundlesResponse): ListStandaloneRulesetBundlesResponseImpl {\n    return new ListStandaloneRulesetBundlesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneRulesetLabelStatus, StandaloneRulesetLabelStatus, StandaloneRulesetLabelStatusImpl, newStandaloneRulesetLabelStatusImpl } from './standaloneRulesetLabelStatus';\nimport { _StandaloneRulesetLabelSpec, StandaloneRulesetLabelSpec, StandaloneRulesetLabelSpecImpl, newStandaloneRulesetLabelSpecImpl } from './standaloneRulesetLabelSpec';\nimport { _CommonMetadata, CommonMetadata, CommonMetadataImpl, newCommonMetadataImpl } from './commonMetadata';\n\n\n/**\n * An identifier used to associate with one or more StandaloneRulesets \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRulesetLabel { \n    metadata?: CommonMetadata;\n    spec?: StandaloneRulesetLabelSpec;\n    status?: StandaloneRulesetLabelStatus;\n}\n\nexport interface StandaloneRulesetLabel extends _StandaloneRulesetLabel {\n    _builtin_original?: _StandaloneRulesetLabel;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRulesetLabelImpl  implements _StandaloneRulesetLabel {\n    _builtin_original?: _StandaloneRulesetLabel = undefined;\n    public metadata: CommonMetadata  | undefined ;\n    public spec: StandaloneRulesetLabelSpec  | undefined ;\n    public status: StandaloneRulesetLabelStatus  | undefined ;\n    constructor(base: _StandaloneRulesetLabel) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneRulesetLabelImpl(base: _StandaloneRulesetLabel): StandaloneRulesetLabelImpl {\n    return new StandaloneRulesetLabelImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneRulesetLabel, StandaloneRulesetLabel, StandaloneRulesetLabelImpl, newStandaloneRulesetLabelImpl } from './standaloneRulesetLabel';\n\n\n/**\n * Response object for StandaloneRulesetLabel list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListStandaloneRulesetLabelsResponse { \n    /**\n     * List of StandaloneRulesetLabel\n     */\n    standalone_ruleset_labels: Array<StandaloneRulesetLabel>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListStandaloneRulesetLabelsResponse extends _ListStandaloneRulesetLabelsResponse {\n    _builtin_original?: _ListStandaloneRulesetLabelsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListStandaloneRulesetLabelsResponseImpl  implements _ListStandaloneRulesetLabelsResponse {\n    _builtin_original?: _ListStandaloneRulesetLabelsResponse = undefined;\n    public standalone_ruleset_labels: Array<StandaloneRulesetLabel> ;\n    public limit: number ;\n    constructor(base: _ListStandaloneRulesetLabelsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'standalone_ruleset_labels') >= 0) {\n            if (base.standalone_ruleset_labels) {\n                this.standalone_ruleset_labels = base.standalone_ruleset_labels.map((original) => newStandaloneRulesetLabelImpl(original));\n            } else {\n                this.standalone_ruleset_labels = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.standalone_ruleset_labels !== undefined) {\n            for (const item of this.standalone_ruleset_labels) {\n                if (item !== undefined && (item as StandaloneRulesetLabelImpl)._remove_builtin_extensions !== undefined) {\n                    (item as StandaloneRulesetLabelImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListStandaloneRulesetLabelsResponseImpl(base: _ListStandaloneRulesetLabelsResponse): ListStandaloneRulesetLabelsResponseImpl {\n    return new ListStandaloneRulesetLabelsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _StandaloneRulesetStatus, StandaloneRulesetStatus, StandaloneRulesetStatusImpl, newStandaloneRulesetStatusImpl } from './standaloneRulesetStatus';\nimport { _StandaloneRulesetSpec, StandaloneRulesetSpec, StandaloneRulesetSpecImpl, newStandaloneRulesetSpecImpl } from './standaloneRulesetSpec';\n\n\n/**\n * Builds a forest of rules which are all applied together. The rules engine applies each tree in priority (highest to lowest value) order, stopping evaluation once one tree has matched. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRuleset { \n    metadata?: MetadataWithId;\n    spec: StandaloneRulesetSpec;\n    status?: StandaloneRulesetStatus;\n}\n\nexport interface StandaloneRuleset extends _StandaloneRuleset {\n    _builtin_original?: _StandaloneRuleset;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRulesetImpl  implements _StandaloneRuleset {\n    _builtin_original?: _StandaloneRuleset = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: StandaloneRulesetSpec ;\n    public status: StandaloneRulesetStatus  | undefined ;\n    constructor(base: _StandaloneRuleset) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneRulesetImpl(base: _StandaloneRuleset): StandaloneRulesetImpl {\n    return new StandaloneRulesetImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneRuleset, StandaloneRuleset, StandaloneRulesetImpl, newStandaloneRulesetImpl } from './standaloneRuleset';\n\n\n/**\n * Response object for listing StandaloneRuleRuleset objects.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListStandaloneRulesetsResponse { \n    /**\n     * List of StandaloneRuleset objects\n     */\n    standalone_rulesets: Array<StandaloneRuleset>;\n    /**\n     * The maximum number of records returned in the response.\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n}\n\nexport interface ListStandaloneRulesetsResponse extends _ListStandaloneRulesetsResponse {\n    _builtin_original?: _ListStandaloneRulesetsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListStandaloneRulesetsResponseImpl  implements _ListStandaloneRulesetsResponse {\n    _builtin_original?: _ListStandaloneRulesetsResponse = undefined;\n    public standalone_rulesets: Array<StandaloneRuleset> ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    constructor(base: _ListStandaloneRulesetsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'standalone_rulesets') >= 0) {\n            if (base.standalone_rulesets) {\n                this.standalone_rulesets = base.standalone_rulesets.map((original) => newStandaloneRulesetImpl(original));\n            } else {\n                this.standalone_rulesets = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.standalone_rulesets !== undefined) {\n            for (const item of this.standalone_rulesets) {\n                if (item !== undefined && (item as StandaloneRulesetImpl)._remove_builtin_extensions !== undefined) {\n                    (item as StandaloneRulesetImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListStandaloneRulesetsResponseImpl(base: _ListStandaloneRulesetsResponse): ListStandaloneRulesetsResponseImpl {\n    return new ListStandaloneRulesetsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _SupportRequestAcknowledgement, SupportRequestAcknowledgement, SupportRequestAcknowledgementImpl, newSupportRequestAcknowledgementImpl } from './supportRequestAcknowledgement';\n\n\n/**\n * Response object for the list of SupportRequestAcknowledgement\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListSupportRequestAcknowledgementsResponse { \n    /**\n     * List of Support Request Acknowledgements\n     */\n    support_request_acknowledgements?: Array<SupportRequestAcknowledgement>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The id to request in the pagination query to get the next page.\n     */\n    page_at_id?: string;\n    /**\n     * The next page to fetch when searching backwards. If an empty string, the current page is the first page. \n     */\n    previous_id?: string;\n}\n\nexport interface ListSupportRequestAcknowledgementsResponse extends _ListSupportRequestAcknowledgementsResponse {\n    _builtin_original?: _ListSupportRequestAcknowledgementsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListSupportRequestAcknowledgementsResponseImpl  implements _ListSupportRequestAcknowledgementsResponse {\n    _builtin_original?: _ListSupportRequestAcknowledgementsResponse = undefined;\n    public support_request_acknowledgements: Array<SupportRequestAcknowledgement>  | undefined ;\n    public limit: number ;\n    public page_at_id: string  | undefined ;\n    public previous_id: string  | undefined ;\n    constructor(base: _ListSupportRequestAcknowledgementsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'support_request_acknowledgements') >= 0) {\n            if (base.support_request_acknowledgements) {\n                this.support_request_acknowledgements = base.support_request_acknowledgements.map((original) => newSupportRequestAcknowledgementImpl(original));\n            } else {\n                this.support_request_acknowledgements = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_id') >= 0) {\n            this.page_at_id = base.page_at_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'previous_id') >= 0) {\n            this.previous_id = base.previous_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.support_request_acknowledgements !== undefined) {\n            for (const item of this.support_request_acknowledgements) {\n                if (item !== undefined && (item as SupportRequestAcknowledgementImpl)._remove_builtin_extensions !== undefined) {\n                    (item as SupportRequestAcknowledgementImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListSupportRequestAcknowledgementsResponseImpl(base: _ListSupportRequestAcknowledgementsResponse): ListSupportRequestAcknowledgementsResponseImpl {\n    return new ListSupportRequestAcknowledgementsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _SupportRequestSpec, SupportRequestSpec, SupportRequestSpecImpl, newSupportRequestSpecImpl } from './supportRequestSpec';\nimport { _SupportRequestStatus, SupportRequestStatus, SupportRequestStatusImpl, newSupportRequestStatusImpl } from './supportRequestStatus';\n\n\n/**\n * A temporary set of permissions given to a user from another organisation so that they may provide support, which is a temporaty elevated access allowing the user to investigate or troubleshoot issues a customer have requested support on. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SupportRequest { \n    metadata?: MetadataWithId;\n    spec: SupportRequestSpec;\n    status?: SupportRequestStatus;\n}\n\nexport interface SupportRequest extends _SupportRequest {\n    _builtin_original?: _SupportRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SupportRequestImpl  implements _SupportRequest {\n    _builtin_original?: _SupportRequest = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: SupportRequestSpec ;\n    public status: SupportRequestStatus  | undefined ;\n    constructor(base: _SupportRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSupportRequestImpl(base: _SupportRequest): SupportRequestImpl {\n    return new SupportRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _SupportRequest, SupportRequest, SupportRequestImpl, newSupportRequestImpl } from './supportRequest';\n\n\n/**\n * Response object for the list of SupportRequest\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListSupportRequestResponse { \n    /**\n     * The matching SupportRequest objects\n     */\n    support_requests: Array<SupportRequest>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListSupportRequestResponse extends _ListSupportRequestResponse {\n    _builtin_original?: _ListSupportRequestResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListSupportRequestResponseImpl  implements _ListSupportRequestResponse {\n    _builtin_original?: _ListSupportRequestResponse = undefined;\n    public support_requests: Array<SupportRequest> ;\n    public limit: number ;\n    constructor(base: _ListSupportRequestResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'support_requests') >= 0) {\n            if (base.support_requests) {\n                this.support_requests = base.support_requests.map((original) => newSupportRequestImpl(original));\n            } else {\n                this.support_requests = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.support_requests !== undefined) {\n            for (const item of this.support_requests) {\n                if (item !== undefined && (item as SupportRequestImpl)._remove_builtin_extensions !== undefined) {\n                    (item as SupportRequestImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListSupportRequestResponseImpl(base: _ListSupportRequestResponse): ListSupportRequestResponseImpl {\n    return new ListSupportRequestResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _TOTPEnrollmentSpec, TOTPEnrollmentSpec, TOTPEnrollmentSpecImpl, newTOTPEnrollmentSpecImpl } from './tOTPEnrollmentSpec';\nimport { _TOTPEnrollmentStatus, TOTPEnrollmentStatus, TOTPEnrollmentStatusImpl, newTOTPEnrollmentStatusImpl } from './tOTPEnrollmentStatus';\n\n\n/**\n * An object used for enrolling the user in the Time-based One-time Password method for Multi-factor authentication.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TOTPEnrollment { \n    metadata?: MetadataWithId;\n    spec: TOTPEnrollmentSpec;\n    status?: TOTPEnrollmentStatus;\n}\n\nexport interface TOTPEnrollment extends _TOTPEnrollment {\n    _builtin_original?: _TOTPEnrollment;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TOTPEnrollmentImpl  implements _TOTPEnrollment {\n    _builtin_original?: _TOTPEnrollment = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: TOTPEnrollmentSpec ;\n    public status: TOTPEnrollmentStatus  | undefined ;\n    constructor(base: _TOTPEnrollment) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTOTPEnrollmentImpl(base: _TOTPEnrollment): TOTPEnrollmentImpl {\n    return new TOTPEnrollmentImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _TOTPEnrollment, TOTPEnrollment, TOTPEnrollmentImpl, newTOTPEnrollmentImpl } from './tOTPEnrollment';\n\n\n/**\n * Response object for an challenge enrollment query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListTOTPEnrollmentResponse { \n    /**\n     * List of challenge enrollments\n     */\n    totp?: Array<TOTPEnrollment>;\n    /**\n     * Limit of issuers in the response\n     */\n    limit: number;\n}\n\nexport interface ListTOTPEnrollmentResponse extends _ListTOTPEnrollmentResponse {\n    _builtin_original?: _ListTOTPEnrollmentResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListTOTPEnrollmentResponseImpl  implements _ListTOTPEnrollmentResponse {\n    _builtin_original?: _ListTOTPEnrollmentResponse = undefined;\n    public totp: Array<TOTPEnrollment>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListTOTPEnrollmentResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'totp') >= 0) {\n            if (base.totp) {\n                this.totp = base.totp.map((original) => newTOTPEnrollmentImpl(original));\n            } else {\n                this.totp = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.totp !== undefined) {\n            for (const item of this.totp) {\n                if (item !== undefined && (item as TOTPEnrollmentImpl)._remove_builtin_extensions !== undefined) {\n                    (item as TOTPEnrollmentImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListTOTPEnrollmentResponseImpl(base: _ListTOTPEnrollmentResponse): ListTOTPEnrollmentResponseImpl {\n    return new ListTOTPEnrollmentResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Token, Token, TokenImpl, newTokenImpl } from './token';\n\n\n/**\n * Response object for tokens query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListTokensResponse { \n    /**\n     * List of tokens\n     */\n    tokens?: Array<Token>;\n    /**\n     * Limit of tokens in the response\n     */\n    limit: number;\n}\n\nexport interface ListTokensResponse extends _ListTokensResponse {\n    _builtin_original?: _ListTokensResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListTokensResponseImpl  implements _ListTokensResponse {\n    _builtin_original?: _ListTokensResponse = undefined;\n    public tokens: Array<Token>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListTokensResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'tokens') >= 0) {\n            if (base.tokens) {\n                this.tokens = base.tokens.map((original) => newTokenImpl(original));\n            } else {\n                this.tokens = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.tokens !== undefined) {\n            for (const item of this.tokens) {\n                if (item !== undefined && (item as TokenImpl)._remove_builtin_extensions !== undefined) {\n                    (item as TokenImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListTokensResponseImpl(base: _ListTokensResponse): ListTokensResponseImpl {\n    return new ListTokensResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * User metrics\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserMetrics { \n    /**\n     * User\\'s email-address; Is an empty string if no email is found in the user id lookup\n     */\n    email?: string;\n    /**\n     * Number of intervals for which the user was active\n     */\n    count?: number;\n    /**\n     * Identifier for the active user\n     */\n    user_id?: string;\n}\n\nexport interface UserMetrics extends _UserMetrics {\n    _builtin_original?: _UserMetrics;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserMetricsImpl  implements _UserMetrics {\n    _builtin_original?: _UserMetrics = undefined;\n    public email: string  | undefined ;\n    public count: number  | undefined ;\n    public user_id: string  | undefined ;\n    constructor(base: _UserMetrics) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'email') >= 0) {\n            this.email = base.email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'count') >= 0) {\n            this.count = base.count;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUserMetricsImpl(base: _UserMetrics): UserMetricsImpl {\n    return new UserMetricsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserMetrics, UserMetrics, UserMetricsImpl, newUserMetricsImpl } from './userMetrics';\n\n\n/**\n * Response object for top users query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListTopUsersResponse { \n    /**\n     * List of top users\n     */\n    top_users?: Array<UserMetrics>;\n    /**\n     * Limit on number of users in response\n     */\n    limit: number;\n}\n\nexport interface ListTopUsersResponse extends _ListTopUsersResponse {\n    _builtin_original?: _ListTopUsersResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListTopUsersResponseImpl  implements _ListTopUsersResponse {\n    _builtin_original?: _ListTopUsersResponse = undefined;\n    public top_users: Array<UserMetrics>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListTopUsersResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'top_users') >= 0) {\n            if (base.top_users) {\n                this.top_users = base.top_users.map((original) => newUserMetricsImpl(original));\n            } else {\n                this.top_users = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.top_users !== undefined) {\n            for (const item of this.top_users) {\n                if (item !== undefined && (item as UserMetricsImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserMetricsImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListTopUsersResponseImpl(base: _ListTopUsersResponse): ListTopUsersResponseImpl {\n    return new ListTopUsersResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _TrustedCertificateSpec, TrustedCertificateSpec, TrustedCertificateSpecImpl, newTrustedCertificateSpecImpl } from './trustedCertificateSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _TrustedCertificateStatus, TrustedCertificateStatus, TrustedCertificateStatusImpl, newTrustedCertificateStatusImpl } from './trustedCertificateStatus';\n\n\n/**\n * A Root or Intermediate certificate used for validating leaf certificates. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TrustedCertificate { \n    metadata?: MetadataWithId;\n    spec: TrustedCertificateSpec;\n    status?: TrustedCertificateStatus;\n}\n\nexport interface TrustedCertificate extends _TrustedCertificate {\n    _builtin_original?: _TrustedCertificate;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TrustedCertificateImpl  implements _TrustedCertificate {\n    _builtin_original?: _TrustedCertificate = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: TrustedCertificateSpec ;\n    public status: TrustedCertificateStatus  | undefined ;\n    constructor(base: _TrustedCertificate) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTrustedCertificateImpl(base: _TrustedCertificate): TrustedCertificateImpl {\n    return new TrustedCertificateImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _TrustedCertificate, TrustedCertificate, TrustedCertificateImpl, newTrustedCertificateImpl } from './trustedCertificate';\n\n\n/**\n * Response object for TrustedCertificate list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListTrustedCertificate { \n    /**\n     * List of TrustedCertificate\n     */\n    trusted_certs: Array<TrustedCertificate>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListTrustedCertificate extends _ListTrustedCertificate {\n    _builtin_original?: _ListTrustedCertificate;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListTrustedCertificateImpl  implements _ListTrustedCertificate {\n    _builtin_original?: _ListTrustedCertificate = undefined;\n    public trusted_certs: Array<TrustedCertificate> ;\n    public limit: number ;\n    constructor(base: _ListTrustedCertificate) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'trusted_certs') >= 0) {\n            if (base.trusted_certs) {\n                this.trusted_certs = base.trusted_certs.map((original) => newTrustedCertificateImpl(original));\n            } else {\n                this.trusted_certs = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.trusted_certs !== undefined) {\n            for (const item of this.trusted_certs) {\n                if (item !== undefined && (item as TrustedCertificateImpl)._remove_builtin_extensions !== undefined) {\n                    (item as TrustedCertificateImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListTrustedCertificateImpl(base: _ListTrustedCertificate): ListTrustedCertificateImpl {\n    return new ListTrustedCertificateImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _TrustedCertificateBundleSpec, TrustedCertificateBundleSpec, TrustedCertificateBundleSpecImpl, newTrustedCertificateBundleSpecImpl } from './trustedCertificateBundleSpec';\nimport { _TrustedCertificateBundleStatus, TrustedCertificateBundleStatus, TrustedCertificateBundleStatusImpl, newTrustedCertificateBundleStatusImpl } from './trustedCertificateBundleStatus';\n\n\n/**\n * A container for TrustedCertificateLabels. This allows retrieval and management of a collection of certificates associated with labels. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TrustedCertificateBundle { \n    metadata?: MetadataWithId;\n    spec: TrustedCertificateBundleSpec;\n    status?: TrustedCertificateBundleStatus;\n}\n\nexport interface TrustedCertificateBundle extends _TrustedCertificateBundle {\n    _builtin_original?: _TrustedCertificateBundle;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TrustedCertificateBundleImpl  implements _TrustedCertificateBundle {\n    _builtin_original?: _TrustedCertificateBundle = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: TrustedCertificateBundleSpec ;\n    public status: TrustedCertificateBundleStatus  | undefined ;\n    constructor(base: _TrustedCertificateBundle) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTrustedCertificateBundleImpl(base: _TrustedCertificateBundle): TrustedCertificateBundleImpl {\n    return new TrustedCertificateBundleImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _TrustedCertificateBundle, TrustedCertificateBundle, TrustedCertificateBundleImpl, newTrustedCertificateBundleImpl } from './trustedCertificateBundle';\n\n\n/**\n * Response object for TrustedCertificateBundle list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListTrustedCertificateBundle { \n    /**\n     * List of TrustedCertificateBundle\n     */\n    trusted_cert_bundles: Array<TrustedCertificateBundle>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListTrustedCertificateBundle extends _ListTrustedCertificateBundle {\n    _builtin_original?: _ListTrustedCertificateBundle;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListTrustedCertificateBundleImpl  implements _ListTrustedCertificateBundle {\n    _builtin_original?: _ListTrustedCertificateBundle = undefined;\n    public trusted_cert_bundles: Array<TrustedCertificateBundle> ;\n    public limit: number ;\n    constructor(base: _ListTrustedCertificateBundle) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'trusted_cert_bundles') >= 0) {\n            if (base.trusted_cert_bundles) {\n                this.trusted_cert_bundles = base.trusted_cert_bundles.map((original) => newTrustedCertificateBundleImpl(original));\n            } else {\n                this.trusted_cert_bundles = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.trusted_cert_bundles !== undefined) {\n            for (const item of this.trusted_cert_bundles) {\n                if (item !== undefined && (item as TrustedCertificateBundleImpl)._remove_builtin_extensions !== undefined) {\n                    (item as TrustedCertificateBundleImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListTrustedCertificateBundleImpl(base: _ListTrustedCertificateBundle): ListTrustedCertificateBundleImpl {\n    return new ListTrustedCertificateBundleImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _TrustedCertificateLabelSpec, TrustedCertificateLabelSpec, TrustedCertificateLabelSpecImpl, newTrustedCertificateLabelSpecImpl } from './trustedCertificateLabelSpec';\nimport { _TrustedCertificateLabelStatus, TrustedCertificateLabelStatus, TrustedCertificateLabelStatusImpl, newTrustedCertificateLabelStatusImpl } from './trustedCertificateLabelStatus';\nimport { _CommonMetadata, CommonMetadata, CommonMetadataImpl, newCommonMetadataImpl } from './commonMetadata';\n\n\n/**\n * An identifier used to associate with one or more certificates \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TrustedCertificateLabel { \n    metadata?: CommonMetadata;\n    spec?: TrustedCertificateLabelSpec;\n    status?: TrustedCertificateLabelStatus;\n}\n\nexport interface TrustedCertificateLabel extends _TrustedCertificateLabel {\n    _builtin_original?: _TrustedCertificateLabel;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TrustedCertificateLabelImpl  implements _TrustedCertificateLabel {\n    _builtin_original?: _TrustedCertificateLabel = undefined;\n    public metadata: CommonMetadata  | undefined ;\n    public spec: TrustedCertificateLabelSpec  | undefined ;\n    public status: TrustedCertificateLabelStatus  | undefined ;\n    constructor(base: _TrustedCertificateLabel) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTrustedCertificateLabelImpl(base: _TrustedCertificateLabel): TrustedCertificateLabelImpl {\n    return new TrustedCertificateLabelImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _TrustedCertificateLabel, TrustedCertificateLabel, TrustedCertificateLabelImpl, newTrustedCertificateLabelImpl } from './trustedCertificateLabel';\n\n\n/**\n * Response object for TrustedCertificateLabel list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListTrustedCertificateLabel { \n    /**\n     * List of TrustedCertificateLabel\n     */\n    trusted_cert_labels: Array<TrustedCertificateLabel>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListTrustedCertificateLabel extends _ListTrustedCertificateLabel {\n    _builtin_original?: _ListTrustedCertificateLabel;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListTrustedCertificateLabelImpl  implements _ListTrustedCertificateLabel {\n    _builtin_original?: _ListTrustedCertificateLabel = undefined;\n    public trusted_cert_labels: Array<TrustedCertificateLabel> ;\n    public limit: number ;\n    constructor(base: _ListTrustedCertificateLabel) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'trusted_cert_labels') >= 0) {\n            if (base.trusted_cert_labels) {\n                this.trusted_cert_labels = base.trusted_cert_labels.map((original) => newTrustedCertificateLabelImpl(original));\n            } else {\n                this.trusted_cert_labels = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.trusted_cert_labels !== undefined) {\n            for (const item of this.trusted_cert_labels) {\n                if (item !== undefined && (item as TrustedCertificateLabelImpl)._remove_builtin_extensions !== undefined) {\n                    (item as TrustedCertificateLabelImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListTrustedCertificateLabelImpl(base: _ListTrustedCertificateLabel): ListTrustedCertificateLabelImpl {\n    return new ListTrustedCertificateLabelImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An org that can provide trusted certificates\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TrustedCertificateOrg { \n    /**\n     * Unique identifier\n     */\n    id?: string;\n    /**\n     * organisation name\n     */\n    organisation?: string;\n}\n\nexport interface TrustedCertificateOrg extends _TrustedCertificateOrg {\n    _builtin_original?: _TrustedCertificateOrg;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TrustedCertificateOrgImpl  implements _TrustedCertificateOrg {\n    _builtin_original?: _TrustedCertificateOrg = undefined;\n    public id: string  | undefined ;\n    public organisation: string  | undefined ;\n    constructor(base: _TrustedCertificateOrg) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'organisation') >= 0) {\n            this.organisation = base.organisation;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTrustedCertificateOrgImpl(base: _TrustedCertificateOrg): TrustedCertificateOrgImpl {\n    return new TrustedCertificateOrgImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _TrustedCertificateOrg, TrustedCertificateOrg, TrustedCertificateOrgImpl, newTrustedCertificateOrgImpl } from './trustedCertificateOrg';\n\n\n/**\n * Response object for TrustedCertificateOrg list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListTrustedCertificateOrg { \n    /**\n     * List of TrustedCertificateOrg\n     */\n    orgs: Array<TrustedCertificateOrg>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListTrustedCertificateOrg extends _ListTrustedCertificateOrg {\n    _builtin_original?: _ListTrustedCertificateOrg;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListTrustedCertificateOrgImpl  implements _ListTrustedCertificateOrg {\n    _builtin_original?: _ListTrustedCertificateOrg = undefined;\n    public orgs: Array<TrustedCertificateOrg> ;\n    public limit: number ;\n    constructor(base: _ListTrustedCertificateOrg) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'orgs') >= 0) {\n            if (base.orgs) {\n                this.orgs = base.orgs.map((original) => newTrustedCertificateOrgImpl(original));\n            } else {\n                this.orgs = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.orgs !== undefined) {\n            for (const item of this.orgs) {\n                if (item !== undefined && (item as TrustedCertificateOrgImpl)._remove_builtin_extensions !== undefined) {\n                    (item as TrustedCertificateOrgImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListTrustedCertificateOrgImpl(base: _ListTrustedCertificateOrg): ListTrustedCertificateOrgImpl {\n    return new ListTrustedCertificateOrgImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UpstreamAliasSpec, UpstreamAliasSpec, UpstreamAliasSpecImpl, newUpstreamAliasSpecImpl } from './upstreamAliasSpec';\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\n\n\n/**\n * An upstream alias allows administrators to represent one upstream identity provider as a different upstream identity provider for specific client ids. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UpstreamAlias { \n    metadata?: MetadataWithId;\n    spec: UpstreamAliasSpec;\n}\n\nexport interface UpstreamAlias extends _UpstreamAlias {\n    _builtin_original?: _UpstreamAlias;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UpstreamAliasImpl  implements _UpstreamAlias {\n    _builtin_original?: _UpstreamAlias = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: UpstreamAliasSpec ;\n    constructor(base: _UpstreamAlias) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUpstreamAliasImpl(base: _UpstreamAlias): UpstreamAliasImpl {\n    return new UpstreamAliasImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UpstreamAlias, UpstreamAlias, UpstreamAliasImpl, newUpstreamAliasImpl } from './upstreamAlias';\n\n\n/**\n * A list of upstream aliases for a given issuer.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListUpstreamAliases { \n    /**\n     * List of upstream aliases\n     */\n    upstream_aliases?: Array<UpstreamAlias>;\n    /**\n     * Limit the number of upstream aliases returned in the response\n     */\n    limit: number;\n}\n\nexport interface ListUpstreamAliases extends _ListUpstreamAliases {\n    _builtin_original?: _ListUpstreamAliases;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListUpstreamAliasesImpl  implements _ListUpstreamAliases {\n    _builtin_original?: _ListUpstreamAliases = undefined;\n    public upstream_aliases: Array<UpstreamAlias>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListUpstreamAliases) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'upstream_aliases') >= 0) {\n            if (base.upstream_aliases) {\n                this.upstream_aliases = base.upstream_aliases.map((original) => newUpstreamAliasImpl(original));\n            } else {\n                this.upstream_aliases = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.upstream_aliases !== undefined) {\n            for (const item of this.upstream_aliases) {\n                if (item !== undefined && (item as UpstreamAliasImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UpstreamAliasImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListUpstreamAliasesImpl(base: _ListUpstreamAliases): ListUpstreamAliasesImpl {\n    return new ListUpstreamAliasesImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UpstreamGroupMapping, UpstreamGroupMapping, UpstreamGroupMappingImpl, newUpstreamGroupMappingImpl } from './upstreamGroupMapping';\n\n\n/**\n * List of upstream group mappings\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListUpstreamGroupMapping { \n    /**\n     * List of upstream group mapping for a given issuer\n     */\n    upstream_group_mapping: Array<UpstreamGroupMapping>;\n    /**\n     * Limit of upstream group mappings in the response\n     */\n    limit: number;\n}\n\nexport interface ListUpstreamGroupMapping extends _ListUpstreamGroupMapping {\n    _builtin_original?: _ListUpstreamGroupMapping;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListUpstreamGroupMappingImpl  implements _ListUpstreamGroupMapping {\n    _builtin_original?: _ListUpstreamGroupMapping = undefined;\n    public upstream_group_mapping: Array<UpstreamGroupMapping> ;\n    public limit: number ;\n    constructor(base: _ListUpstreamGroupMapping) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'upstream_group_mapping') >= 0) {\n            if (base.upstream_group_mapping) {\n                this.upstream_group_mapping = base.upstream_group_mapping.map((original) => newUpstreamGroupMappingImpl(original));\n            } else {\n                this.upstream_group_mapping = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.upstream_group_mapping !== undefined) {\n            for (const item of this.upstream_group_mapping) {\n                if (item !== undefined && (item as UpstreamGroupMappingImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UpstreamGroupMappingImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListUpstreamGroupMappingImpl(base: _ListUpstreamGroupMapping): ListUpstreamGroupMappingImpl {\n    return new ListUpstreamGroupMappingImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UpstreamUserIdentity, UpstreamUserIdentity, UpstreamUserIdentityImpl, newUpstreamUserIdentityImpl } from './upstreamUserIdentity';\n\n\n/**\n * Response object for upstream user identity query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListUpstreamUserIdentitiesResponse { \n    /**\n     * The matching UpstreamUserIdentity objects\n     */\n    upstream_user_identities: Array<UpstreamUserIdentity>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListUpstreamUserIdentitiesResponse extends _ListUpstreamUserIdentitiesResponse {\n    _builtin_original?: _ListUpstreamUserIdentitiesResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListUpstreamUserIdentitiesResponseImpl  implements _ListUpstreamUserIdentitiesResponse {\n    _builtin_original?: _ListUpstreamUserIdentitiesResponse = undefined;\n    public upstream_user_identities: Array<UpstreamUserIdentity> ;\n    public limit: number ;\n    constructor(base: _ListUpstreamUserIdentitiesResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'upstream_user_identities') >= 0) {\n            if (base.upstream_user_identities) {\n                this.upstream_user_identities = base.upstream_user_identities.map((original) => newUpstreamUserIdentityImpl(original));\n            } else {\n                this.upstream_user_identities = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.upstream_user_identities !== undefined) {\n            for (const item of this.upstream_user_identities) {\n                if (item !== undefined && (item as UpstreamUserIdentityImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UpstreamUserIdentityImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListUpstreamUserIdentitiesResponseImpl(base: _ListUpstreamUserIdentitiesResponse): ListUpstreamUserIdentitiesResponseImpl {\n    return new ListUpstreamUserIdentitiesResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserApplicationAccessInfoStatus, UserApplicationAccessInfoStatus, UserApplicationAccessInfoStatusImpl, newUserApplicationAccessInfoStatusImpl } from './userApplicationAccessInfoStatus';\n\n\n/**\n * A UserApplicationAccessInfo describes whether a user has access to an application as well as various bits of metadata related to the application to help users navigate to it. If a user has access to an instance of an application, querying for that user will return information related to that instance in the record set. If an application is public, then a record will also appear of that application. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserApplicationAccessInfo { \n    status: UserApplicationAccessInfoStatus;\n}\n\nexport interface UserApplicationAccessInfo extends _UserApplicationAccessInfo {\n    _builtin_original?: _UserApplicationAccessInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserApplicationAccessInfoImpl  implements _UserApplicationAccessInfo {\n    _builtin_original?: _UserApplicationAccessInfo = undefined;\n    public status: UserApplicationAccessInfoStatus ;\n    constructor(base: _UserApplicationAccessInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUserApplicationAccessInfoImpl(base: _UserApplicationAccessInfo): UserApplicationAccessInfoImpl {\n    return new UserApplicationAccessInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserApplicationAccessInfo, UserApplicationAccessInfo, UserApplicationAccessInfoImpl, newUserApplicationAccessInfoImpl } from './userApplicationAccessInfo';\n\n\n/**\n * Response object for user application access info query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListUserApplicationAccessInfoResponse { \n    /**\n     * The matching UserApplicationAccessInfo objects\n     */\n    user_application_access_info: Array<UserApplicationAccessInfo>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListUserApplicationAccessInfoResponse extends _ListUserApplicationAccessInfoResponse {\n    _builtin_original?: _ListUserApplicationAccessInfoResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListUserApplicationAccessInfoResponseImpl  implements _ListUserApplicationAccessInfoResponse {\n    _builtin_original?: _ListUserApplicationAccessInfoResponse = undefined;\n    public user_application_access_info: Array<UserApplicationAccessInfo> ;\n    public limit: number ;\n    constructor(base: _ListUserApplicationAccessInfoResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_application_access_info') >= 0) {\n            if (base.user_application_access_info) {\n                this.user_application_access_info = base.user_application_access_info.map((original) => newUserApplicationAccessInfoImpl(original));\n            } else {\n                this.user_application_access_info = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.user_application_access_info !== undefined) {\n            for (const item of this.user_application_access_info) {\n                if (item !== undefined && (item as UserApplicationAccessInfoImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserApplicationAccessInfoImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListUserApplicationAccessInfoResponseImpl(base: _ListUserApplicationAccessInfoResponse): ListUserApplicationAccessInfoResponseImpl {\n    return new ListUserApplicationAccessInfoResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserDesktopAccessInfoStatus, UserDesktopAccessInfoStatus, UserDesktopAccessInfoStatusImpl, newUserDesktopAccessInfoStatusImpl } from './userDesktopAccessInfoStatus';\n\n\n/**\n * A UserDesktopAccessInfo describes whether a user has access to a desktop as well as various bits of metadata related to the desktop to help users navigate to it. If a user has access to an desktop, querying for that user will return information related to that desktop. If a desktop is public that desktop will also appear here. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserDesktopAccessInfo { \n    status: UserDesktopAccessInfoStatus;\n}\n\nexport interface UserDesktopAccessInfo extends _UserDesktopAccessInfo {\n    _builtin_original?: _UserDesktopAccessInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserDesktopAccessInfoImpl  implements _UserDesktopAccessInfo {\n    _builtin_original?: _UserDesktopAccessInfo = undefined;\n    public status: UserDesktopAccessInfoStatus ;\n    constructor(base: _UserDesktopAccessInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUserDesktopAccessInfoImpl(base: _UserDesktopAccessInfo): UserDesktopAccessInfoImpl {\n    return new UserDesktopAccessInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserDesktopAccessInfo, UserDesktopAccessInfo, UserDesktopAccessInfoImpl, newUserDesktopAccessInfoImpl } from './userDesktopAccessInfo';\n\n\n/**\n * Response object for user resource access info query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListUserDesktopAccessInfoResponse { \n    /**\n     * The matching UserDesktopAccessInfo objects\n     */\n    user_desktop_access_info: Array<UserDesktopAccessInfo>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListUserDesktopAccessInfoResponse extends _ListUserDesktopAccessInfoResponse {\n    _builtin_original?: _ListUserDesktopAccessInfoResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListUserDesktopAccessInfoResponseImpl  implements _ListUserDesktopAccessInfoResponse {\n    _builtin_original?: _ListUserDesktopAccessInfoResponse = undefined;\n    public user_desktop_access_info: Array<UserDesktopAccessInfo> ;\n    public limit: number ;\n    constructor(base: _ListUserDesktopAccessInfoResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_desktop_access_info') >= 0) {\n            if (base.user_desktop_access_info) {\n                this.user_desktop_access_info = base.user_desktop_access_info.map((original) => newUserDesktopAccessInfoImpl(original));\n            } else {\n                this.user_desktop_access_info = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.user_desktop_access_info !== undefined) {\n            for (const item of this.user_desktop_access_info) {\n                if (item !== undefined && (item as UserDesktopAccessInfoImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserDesktopAccessInfoImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListUserDesktopAccessInfoResponseImpl(base: _ListUserDesktopAccessInfoResponse): ListUserDesktopAccessInfoResponseImpl {\n    return new ListUserDesktopAccessInfoResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserFileShareAccessInfoStatus, UserFileShareAccessInfoStatus, UserFileShareAccessInfoStatusImpl, newUserFileShareAccessInfoStatusImpl } from './userFileShareAccessInfoStatus';\n\n\n/**\n * A UserFileShareAccessInfo describes whether a user has access to a file share as well as various bits of metadata related to the file share to help users navigate to it. If a user has access to an instance of a file share, querying for that user will return information related to that instance in the record set. If a file share is public, then a record will also appear for that file share. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserFileShareAccessInfo { \n    status: UserFileShareAccessInfoStatus;\n}\n\nexport interface UserFileShareAccessInfo extends _UserFileShareAccessInfo {\n    _builtin_original?: _UserFileShareAccessInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserFileShareAccessInfoImpl  implements _UserFileShareAccessInfo {\n    _builtin_original?: _UserFileShareAccessInfo = undefined;\n    public status: UserFileShareAccessInfoStatus ;\n    constructor(base: _UserFileShareAccessInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUserFileShareAccessInfoImpl(base: _UserFileShareAccessInfo): UserFileShareAccessInfoImpl {\n    return new UserFileShareAccessInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserFileShareAccessInfo, UserFileShareAccessInfo, UserFileShareAccessInfoImpl, newUserFileShareAccessInfoImpl } from './userFileShareAccessInfo';\n\n\n/**\n * Response object for user file share access info query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListUserFileShareAccessInfoResponse { \n    /**\n     * The matching UserFileShareAccessInfo objects\n     */\n    user_file_share_access_info: Array<UserFileShareAccessInfo>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListUserFileShareAccessInfoResponse extends _ListUserFileShareAccessInfoResponse {\n    _builtin_original?: _ListUserFileShareAccessInfoResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListUserFileShareAccessInfoResponseImpl  implements _ListUserFileShareAccessInfoResponse {\n    _builtin_original?: _ListUserFileShareAccessInfoResponse = undefined;\n    public user_file_share_access_info: Array<UserFileShareAccessInfo> ;\n    public limit: number ;\n    constructor(base: _ListUserFileShareAccessInfoResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_file_share_access_info') >= 0) {\n            if (base.user_file_share_access_info) {\n                this.user_file_share_access_info = base.user_file_share_access_info.map((original) => newUserFileShareAccessInfoImpl(original));\n            } else {\n                this.user_file_share_access_info = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.user_file_share_access_info !== undefined) {\n            for (const item of this.user_file_share_access_info) {\n                if (item !== undefined && (item as UserFileShareAccessInfoImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserFileShareAccessInfoImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListUserFileShareAccessInfoResponseImpl(base: _ListUserFileShareAccessInfoResponse): ListUserFileShareAccessInfoResponseImpl {\n    return new ListUserFileShareAccessInfoResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Response object for user GUID query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListUserGuidsResponse { \n    /**\n     * A list of user GUIDs\n     */\n    user_ids?: Array<string>;\n}\n\nexport interface ListUserGuidsResponse extends _ListUserGuidsResponse {\n    _builtin_original?: _ListUserGuidsResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListUserGuidsResponseImpl  implements _ListUserGuidsResponse {\n    _builtin_original?: _ListUserGuidsResponse = undefined;\n    public user_ids: Array<string>  | undefined ;\n    constructor(base: _ListUserGuidsResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_ids') >= 0) {\n            this.user_ids = base.user_ids;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newListUserGuidsResponseImpl(base: _ListUserGuidsResponse): ListUserGuidsResponseImpl {\n    return new ListUserGuidsResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserResourceAccessInfoStatus, UserResourceAccessInfoStatus, UserResourceAccessInfoStatusImpl, newUserResourceAccessInfoStatusImpl } from './userResourceAccessInfoStatus';\nimport { _Launcher, Launcher, LauncherImpl, newLauncherImpl } from './launcher';\n\n\n/**\n * A UserLauncherAccessInfo describes the Launcher that is acessible to a user. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserLauncherAccessInfo { \n    status: UserResourceAccessInfoStatus;\n    launcher?: Launcher;\n}\n\nexport interface UserLauncherAccessInfo extends _UserLauncherAccessInfo {\n    _builtin_original?: _UserLauncherAccessInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserLauncherAccessInfoImpl  implements _UserLauncherAccessInfo {\n    _builtin_original?: _UserLauncherAccessInfo = undefined;\n    public status: UserResourceAccessInfoStatus ;\n    public launcher: Launcher  | undefined ;\n    constructor(base: _UserLauncherAccessInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'launcher') >= 0) {\n            this.launcher = base.launcher;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUserLauncherAccessInfoImpl(base: _UserLauncherAccessInfo): UserLauncherAccessInfoImpl {\n    return new UserLauncherAccessInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserLauncherAccessInfo, UserLauncherAccessInfo, UserLauncherAccessInfoImpl, newUserLauncherAccessInfoImpl } from './userLauncherAccessInfo';\n\n\n/**\n * Response object for user launcher access info query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListUserLauncherAccessInfoResponse { \n    /**\n     * The matching UserLauncherAccessInfo objects\n     */\n    user_launcher_access_info: Array<UserLauncherAccessInfo>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListUserLauncherAccessInfoResponse extends _ListUserLauncherAccessInfoResponse {\n    _builtin_original?: _ListUserLauncherAccessInfoResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListUserLauncherAccessInfoResponseImpl  implements _ListUserLauncherAccessInfoResponse {\n    _builtin_original?: _ListUserLauncherAccessInfoResponse = undefined;\n    public user_launcher_access_info: Array<UserLauncherAccessInfo> ;\n    public limit: number ;\n    constructor(base: _ListUserLauncherAccessInfoResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_launcher_access_info') >= 0) {\n            if (base.user_launcher_access_info) {\n                this.user_launcher_access_info = base.user_launcher_access_info.map((original) => newUserLauncherAccessInfoImpl(original));\n            } else {\n                this.user_launcher_access_info = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.user_launcher_access_info !== undefined) {\n            for (const item of this.user_launcher_access_info) {\n                if (item !== undefined && (item as UserLauncherAccessInfoImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserLauncherAccessInfoImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListUserLauncherAccessInfoResponseImpl(base: _ListUserLauncherAccessInfoResponse): ListUserLauncherAccessInfoResponseImpl {\n    return new ListUserLauncherAccessInfoResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _UserMetadataSpec, UserMetadataSpec, UserMetadataSpecImpl, newUserMetadataSpecImpl } from './userMetadataSpec';\n\n\n/**\n * A generic set of data for a user indexed to a given org and/or application \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserMetadata { \n    metadata?: MetadataWithId;\n    spec: UserMetadataSpec;\n}\n\nexport interface UserMetadata extends _UserMetadata {\n    _builtin_original?: _UserMetadata;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserMetadataImpl  implements _UserMetadata {\n    _builtin_original?: _UserMetadata = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: UserMetadataSpec ;\n    constructor(base: _UserMetadata) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUserMetadataImpl(base: _UserMetadata): UserMetadataImpl {\n    return new UserMetadataImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserMetadata, UserMetadata, UserMetadataImpl, newUserMetadataImpl } from './userMetadata';\n\n\n/**\n * Response object for user org, app preferences\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListUserMetadataResponse { \n    /**\n     * The matching UserOrgAppPreferences objects\n     */\n    user_metadata: Array<UserMetadata>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListUserMetadataResponse extends _ListUserMetadataResponse {\n    _builtin_original?: _ListUserMetadataResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListUserMetadataResponseImpl  implements _ListUserMetadataResponse {\n    _builtin_original?: _ListUserMetadataResponse = undefined;\n    public user_metadata: Array<UserMetadata> ;\n    public limit: number ;\n    constructor(base: _ListUserMetadataResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_metadata') >= 0) {\n            if (base.user_metadata) {\n                this.user_metadata = base.user_metadata.map((original) => newUserMetadataImpl(original));\n            } else {\n                this.user_metadata = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.user_metadata !== undefined) {\n            for (const item of this.user_metadata) {\n                if (item !== undefined && (item as UserMetadataImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserMetadataImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListUserMetadataResponseImpl(base: _ListUserMetadataResponse): ListUserMetadataResponseImpl {\n    return new ListUserMetadataResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserRequestInfo, UserRequestInfo, UserRequestInfoImpl, newUserRequestInfoImpl } from './userRequestInfo';\n\n\n/**\n * Response object for user request query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListUserRequestInfoResponse { \n    /**\n     * The matching UserRequestInfo objects\n     */\n    user_requests: Array<UserRequestInfo>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListUserRequestInfoResponse extends _ListUserRequestInfoResponse {\n    _builtin_original?: _ListUserRequestInfoResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListUserRequestInfoResponseImpl  implements _ListUserRequestInfoResponse {\n    _builtin_original?: _ListUserRequestInfoResponse = undefined;\n    public user_requests: Array<UserRequestInfo> ;\n    public limit: number ;\n    constructor(base: _ListUserRequestInfoResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_requests') >= 0) {\n            if (base.user_requests) {\n                this.user_requests = base.user_requests.map((original) => newUserRequestInfoImpl(original));\n            } else {\n                this.user_requests = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.user_requests !== undefined) {\n            for (const item of this.user_requests) {\n                if (item !== undefined && (item as UserRequestInfoImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserRequestInfoImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListUserRequestInfoResponseImpl(base: _ListUserRequestInfoResponse): ListUserRequestInfoResponseImpl {\n    return new ListUserRequestInfoResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserResourceAccessInfoStatus, UserResourceAccessInfoStatus, UserResourceAccessInfoStatusImpl, newUserResourceAccessInfoStatusImpl } from './userResourceAccessInfoStatus';\n\n\n/**\n * A ResourceAccessInfo describes whether a user has access to a resource. More specific collections may exist to describe a user\\'s access for a specific type of resource, but this one serves to give a high level overview of access for a specific user. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserResourceAccessInfo { \n    status: UserResourceAccessInfoStatus;\n    resource?: UserResourceAccessInfoStatus;\n}\n\nexport interface UserResourceAccessInfo extends _UserResourceAccessInfo {\n    _builtin_original?: _UserResourceAccessInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserResourceAccessInfoImpl  implements _UserResourceAccessInfo {\n    _builtin_original?: _UserResourceAccessInfo = undefined;\n    public status: UserResourceAccessInfoStatus ;\n    public resource: UserResourceAccessInfoStatus  | undefined ;\n    constructor(base: _UserResourceAccessInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource') >= 0) {\n            this.resource = base.resource;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUserResourceAccessInfoImpl(base: _UserResourceAccessInfo): UserResourceAccessInfoImpl {\n    return new UserResourceAccessInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserResourceAccessInfo, UserResourceAccessInfo, UserResourceAccessInfoImpl, newUserResourceAccessInfoImpl } from './userResourceAccessInfo';\n\n\n/**\n * Response object for user resource access info query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListUserResourceAccessInfoResponse { \n    /**\n     * The matching UserResourceAccessInfo objects\n     */\n    user_resource_access_info: Array<UserResourceAccessInfo>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListUserResourceAccessInfoResponse extends _ListUserResourceAccessInfoResponse {\n    _builtin_original?: _ListUserResourceAccessInfoResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListUserResourceAccessInfoResponseImpl  implements _ListUserResourceAccessInfoResponse {\n    _builtin_original?: _ListUserResourceAccessInfoResponse = undefined;\n    public user_resource_access_info: Array<UserResourceAccessInfo> ;\n    public limit: number ;\n    constructor(base: _ListUserResourceAccessInfoResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_resource_access_info') >= 0) {\n            if (base.user_resource_access_info) {\n                this.user_resource_access_info = base.user_resource_access_info.map((original) => newUserResourceAccessInfoImpl(original));\n            } else {\n                this.user_resource_access_info = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.user_resource_access_info !== undefined) {\n            for (const item of this.user_resource_access_info) {\n                if (item !== undefined && (item as UserResourceAccessInfoImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserResourceAccessInfoImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListUserResourceAccessInfoResponseImpl(base: _ListUserResourceAccessInfoResponse): ListUserResourceAccessInfoResponseImpl {\n    return new ListUserResourceAccessInfoResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The roles for a user\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserRolesForAnOrg { \n    /**\n     * Unique identifier\n     */\n    user_id?: string;\n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n    /**\n     * The application the user has a role for\n     */\n    application?: string;\n    /**\n     * The role the user has for the given application\n     */\n    role?: string;\n}\n\nexport interface UserRolesForAnOrg extends _UserRolesForAnOrg {\n    _builtin_original?: _UserRolesForAnOrg;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserRolesForAnOrgImpl  implements _UserRolesForAnOrg {\n    _builtin_original?: _UserRolesForAnOrg = undefined;\n    public user_id: string  | undefined ;\n    public org_id: string  | undefined ;\n    public application: string  | undefined ;\n    public role: string  | undefined ;\n    constructor(base: _UserRolesForAnOrg) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application') >= 0) {\n            this.application = base.application;\n        }\n        if (Object.keys(base).findIndex(key => key === 'role') >= 0) {\n            this.role = base.role;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUserRolesForAnOrgImpl(base: _UserRolesForAnOrg): UserRolesForAnOrgImpl {\n    return new UserRolesForAnOrgImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserRolesForAnOrg, UserRolesForAnOrg, UserRolesForAnOrgImpl, newUserRolesForAnOrgImpl } from './userRolesForAnOrg';\n\n\n/**\n * Response object for org user roles query. This is all roles a user has for a given org. Note this does not include roles inherited via group membership. A user may have multiple roles for a given application. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListUserRolesForAnOrg { \n    /**\n     * The matching UserRolesForAnOrgs objects\n     */\n    org_user_roles: Array<UserRolesForAnOrg>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The offset of the next data entry. A value of offset equal to the limit implies there might be more data available and the client should query again with the offset query parameter set to this value. \n     */\n    offset: number;\n}\n\nexport interface ListUserRolesForAnOrg extends _ListUserRolesForAnOrg {\n    _builtin_original?: _ListUserRolesForAnOrg;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListUserRolesForAnOrgImpl  implements _ListUserRolesForAnOrg {\n    _builtin_original?: _ListUserRolesForAnOrg = undefined;\n    public org_user_roles: Array<UserRolesForAnOrg> ;\n    public limit: number ;\n    public offset: number ;\n    constructor(base: _ListUserRolesForAnOrg) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_user_roles') >= 0) {\n            if (base.org_user_roles) {\n                this.org_user_roles = base.org_user_roles.map((original) => newUserRolesForAnOrgImpl(original));\n            } else {\n                this.org_user_roles = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'offset') >= 0) {\n            this.offset = base.offset;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.org_user_roles !== undefined) {\n            for (const item of this.org_user_roles) {\n                if (item !== undefined && (item as UserRolesForAnOrgImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserRolesForAnOrgImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListUserRolesForAnOrgImpl(base: _ListUserRolesForAnOrg): ListUserRolesForAnOrgImpl {\n    return new ListUserRolesForAnOrgImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserSSHAccessInfoStatus, UserSSHAccessInfoStatus, UserSSHAccessInfoStatusImpl, newUserSSHAccessInfoStatusImpl } from './userSSHAccessInfoStatus';\n\n\n/**\n * A UserSSHAccessInfo describes whether a user has access to a machine via ssh as well as various bits of metadata related to the machine to help users navigate to it. If a user has access to a machine, querying for that user will return information related to that machine. If a ssh machine is public that machone will also appear here. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserSSHAccessInfo { \n    status: UserSSHAccessInfoStatus;\n}\n\nexport interface UserSSHAccessInfo extends _UserSSHAccessInfo {\n    _builtin_original?: _UserSSHAccessInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserSSHAccessInfoImpl  implements _UserSSHAccessInfo {\n    _builtin_original?: _UserSSHAccessInfo = undefined;\n    public status: UserSSHAccessInfoStatus ;\n    constructor(base: _UserSSHAccessInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUserSSHAccessInfoImpl(base: _UserSSHAccessInfo): UserSSHAccessInfoImpl {\n    return new UserSSHAccessInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserSSHAccessInfo, UserSSHAccessInfo, UserSSHAccessInfoImpl, newUserSSHAccessInfoImpl } from './userSSHAccessInfo';\n\n\n/**\n * Response object for user resource access info query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListUserSSHAccessInfoResponse { \n    /**\n     * The matching UserSSHAccessInfo objects\n     */\n    user_ssh_access_info: Array<UserSSHAccessInfo>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListUserSSHAccessInfoResponse extends _ListUserSSHAccessInfoResponse {\n    _builtin_original?: _ListUserSSHAccessInfoResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListUserSSHAccessInfoResponseImpl  implements _ListUserSSHAccessInfoResponse {\n    _builtin_original?: _ListUserSSHAccessInfoResponse = undefined;\n    public user_ssh_access_info: Array<UserSSHAccessInfo> ;\n    public limit: number ;\n    constructor(base: _ListUserSSHAccessInfoResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_ssh_access_info') >= 0) {\n            if (base.user_ssh_access_info) {\n                this.user_ssh_access_info = base.user_ssh_access_info.map((original) => newUserSSHAccessInfoImpl(original));\n            } else {\n                this.user_ssh_access_info = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.user_ssh_access_info !== undefined) {\n            for (const item of this.user_ssh_access_info) {\n                if (item !== undefined && (item as UserSSHAccessInfoImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserSSHAccessInfoImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListUserSSHAccessInfoResponseImpl(base: _ListUserSSHAccessInfoResponse): ListUserSSHAccessInfoResponseImpl {\n    return new ListUserSSHAccessInfoResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _InheritableUserConfig, InheritableUserConfig, InheritableUserConfigImpl, newInheritableUserConfigImpl } from './inheritableUserConfig';\nimport { _UserAttribute, UserAttribute, UserAttributeImpl, newUserAttributeImpl } from './userAttribute';\nimport { _UserIdentity, UserIdentity, UserIdentityImpl, newUserIdentityImpl } from './userIdentity';\nimport { _UpstreamUserIdentity, UpstreamUserIdentity, UpstreamUserIdentityImpl, newUpstreamUserIdentityImpl } from './upstreamUserIdentity';\nimport { _UserAttributes, UserAttributes, UserAttributesImpl, newUserAttributesImpl } from './userAttributes';\nimport { _UserStatusEnum, UserStatusEnum, UserStatusEnumImpl, newUserStatusEnumImpl } from './userStatusEnum';\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _User { \n    /**\n     * List of groups that the user is a member of\n     */\n    member_of?: Array<UserIdentity>;\n    /**\n     * Unique identifier\n     */\n    readonly id?: string;\n    /**\n     * External unique identifier\n     */\n    external_id?: string | null;\n    /**\n     * Indicates if the user is enabled or disabled. This field is managed by the backend based on the users configured status, along with the disabled_at_time property if that is set. \n     */\n    readonly enabled?: boolean;\n    status?: UserStatusEnum;\n    /**\n     * User\\'s first name\n     */\n    first_name?: string;\n    /**\n     * User\\'s last name\n     */\n    last_name?: string;\n    /**\n     * User\\'s full name, combination of first and last name\n     */\n    full_name?: string;\n    /**\n     * User\\'s email address\n     */\n    email?: string;\n    /**\n     * A suitable, simplified name of the user that can be used to identify a user. For users of type \\\"user\\\", this would be the users email. For other user types (group), the first_name would be used as the display_name. This does introduce the possiblity that multiple users may have identical display names. In this situation, it would be up to the consumer of this to de-duplicate the users (such as also display the users email alongside).  examples:     display_name: user@example.com     display_name: all_users_group \n     */\n    readonly display_name?: string;\n    /**\n     * Upstream IdP name\n     */\n    provider?: string | null;\n    /**\n     * An associative array mapping an application to a list of roles\n     */\n    roles?: { [key: string]: Array<string> | undefined; };\n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n    /**\n     * Type of user\n     */\n    readonly type?: User.TypeEnum;\n    /**\n     * Creation time\n     */\n    readonly created?: Date;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n    /**\n     * Whether the user was automatically created as part of another process such as logging in. On creation, this flag being true serves to trigger any behaviour tied to automatically created users, such as addition to special groups. On read, it can serve to indicate whether the user was automatically created. On update it will ensure that the automatically triggered behaviour still holds true. \n     */\n    auto_created?: boolean;\n    /**\n     * System users are controlled by the Agilicus infrastructure as part of providing service. Typically administrators and end users will not interact directly with them, so they should be hidden from display, unless explicitly toggled on. \n     */\n    is_system_user?: boolean;\n    /**\n     * The upstream identities this user can use to log in to the system. When a user logs in, their identity in this system will be determined by matching against this list. Note that this implies that entries in this list are globally unique. \n     */\n    readonly upstream_user_identities?: Array<UpstreamUserIdentity>;\n    /**\n     * Whether the user will be added to sub organisations automatically. When set for a user that is a member of a particular organisation, subsequent creations of sub organisations will add this user to that suborgansation. \n     */\n    cascade?: boolean;\n    configured_attributes?: UserAttributes;\n    /**\n     * The live attributes of the user, as determined from all sources of attributes. A user\\'s attributes flow from all of their upstream_user_identities as well as the `configured_attributes` field. Attributes are merged by name. If two sources of attributes have an attribute with the same name, that attribute will be merged. For cases where a merge is not possible -- e.g. two attributes with different types -- the oldest source of identity will be used. The `configured_attributes` field is always considered the oldest, so it has priority. Further, the resulting items will be sorted in ascending order of name.  For example, considering a user with following two sources of attributes:  ``` older_upstream:   - name: manager     value: best-manager   - name: groups     value: [\\\"A\\\", \\\"B\\\"] newer_upstream:   - name: manager     value: other-manager   - name: groups     value: [\\\"C\\\"]   - name: age     value 32 ```  The resulting attributes will be:  ``` attributes:   - name: age     value 32   - name: groups     value: [\\\"A\\\", \\\"B\\\", \\\"C\\\"]   - name: manager     value: best-manager ``` \n     */\n    readonly attributes?: Array<UserAttribute>;\n    inheritable_config?: InheritableUserConfig;\n    inheritable_status?: InheritableUserConfig;\n    /**\n     * Optionally configure a user to be automatically disabled at a specific point in time. Any retrieval of the user object record past the disabled_at_time will result in the enabled property be set to false. \n     */\n    disabled_at_time?: Date | null;\n}\n\nexport interface User extends _User {\n    _builtin_original?: _User;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserImpl  implements _User {\n    _builtin_original?: _User = undefined;\n    public member_of: Array<UserIdentity>  | undefined ;\n    public readonly id: string  | undefined ;\n    public external_id: string | null  | undefined ;\n    public readonly enabled: boolean  | undefined ;\n    public status: UserStatusEnum  | undefined ;\n    public first_name: string  | undefined ;\n    public last_name: string  | undefined ;\n    public full_name: string  | undefined ;\n    public email: string  | undefined ;\n    public readonly display_name: string  | undefined ;\n    public provider: string | null  | undefined ;\n    public roles: { [key: string]: Array<string> | undefined; }  | undefined ;\n    public org_id: string  | undefined ;\n    public readonly type: User.TypeEnum  | undefined ;\n    public readonly created: Date  | undefined ;\n    public readonly updated: Date  | undefined ;\n    public auto_created: boolean  | undefined ;\n    public is_system_user: boolean  | undefined ;\n    public readonly upstream_user_identities: Array<UpstreamUserIdentity>  | undefined ;\n    public cascade: boolean  | undefined ;\n    public configured_attributes: UserAttributes  | undefined ;\n    public readonly attributes: Array<UserAttribute>  | undefined ;\n    public inheritable_config: InheritableUserConfig  | undefined ;\n    public inheritable_status: InheritableUserConfig  | undefined ;\n    public disabled_at_time: Date | null  | undefined ;\n    constructor(base: _User) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'member_of') >= 0) {\n            if (base.member_of) {\n                this.member_of = base.member_of.map((original) => newUserIdentityImpl(original));\n            } else {\n                this.member_of = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'external_id') >= 0) {\n            this.external_id = base.external_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'first_name') >= 0) {\n            this.first_name = base.first_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_name') >= 0) {\n            this.last_name = base.last_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'full_name') >= 0) {\n            this.full_name = base.full_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'email') >= 0) {\n            this.email = base.email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'display_name') >= 0) {\n            this.display_name = base.display_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'provider') >= 0) {\n            this.provider = base.provider;\n        }\n        if (Object.keys(base).findIndex(key => key === 'roles') >= 0) {\n            this.roles = base.roles;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'type') >= 0) {\n            this.type = base.type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'created') >= 0) {\n            this.created = base.created;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n        if (Object.keys(base).findIndex(key => key === 'auto_created') >= 0) {\n            this.auto_created = base.auto_created;\n        }\n        if (Object.keys(base).findIndex(key => key === 'is_system_user') >= 0) {\n            this.is_system_user = base.is_system_user;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_user_identities') >= 0) {\n            if (base.upstream_user_identities) {\n                this.upstream_user_identities = base.upstream_user_identities.map((original) => newUpstreamUserIdentityImpl(original));\n            } else {\n                this.upstream_user_identities = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'cascade') >= 0) {\n            this.cascade = base.cascade;\n        }\n        if (Object.keys(base).findIndex(key => key === 'configured_attributes') >= 0) {\n            this.configured_attributes = base.configured_attributes;\n        }\n        if (Object.keys(base).findIndex(key => key === 'attributes') >= 0) {\n            if (base.attributes) {\n                this.attributes = base.attributes.map((original) => newUserAttributeImpl(original));\n            } else {\n                this.attributes = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'inheritable_config') >= 0) {\n            this.inheritable_config = base.inheritable_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'inheritable_status') >= 0) {\n            this.inheritable_status = base.inheritable_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'disabled_at_time') >= 0) {\n            this.disabled_at_time = base.disabled_at_time;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.member_of !== undefined) {\n            for (const item of this.member_of) {\n                if (item !== undefined && (item as UserIdentityImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserIdentityImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.upstream_user_identities !== undefined) {\n            for (const item of this.upstream_user_identities) {\n                if (item !== undefined && (item as UpstreamUserIdentityImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UpstreamUserIdentityImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.attributes !== undefined) {\n            for (const item of this.attributes) {\n                if (item !== undefined && (item as UserAttributeImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserAttributeImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace User {\n    export type TypeEnum = 'user' | 'group' | 'sysgroup' | 'bigroup' | 'service_account' | 'support_user';\n    export const TypeEnum = {\n        user: 'user' as TypeEnum,\n        group: 'group' as TypeEnum,\n        sysgroup: 'sysgroup' as TypeEnum,\n        bigroup: 'bigroup' as TypeEnum,\n        service_account: 'service_account' as TypeEnum,\n        support_user: 'support_user' as TypeEnum\n    };\n}\n\n\nexport function newUserImpl(base: _User): UserImpl {\n    return new UserImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _User, User, UserImpl, newUserImpl } from './user';\n\n\n/**\n * Response object for user query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListUsersResponse { \n    /**\n     * List of User objects\n     */\n    users?: Array<User>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n    /**\n     * The first email on the current page. Can be used with \\\"backwards\\\" as the search_direction_query parameter to retrieve the previous page\\'s entries. Is an empty string if the current page is the first page. \n     */\n    previous_page_email?: string;\n    /**\n     * The first email on the next page. Can be used with \\\"forwards\\\" as the search_direction_query parameter to retrieve the next page\\'s entries. Is an empty string if the current page is the last page. \n     */\n    next_page_email?: string;\n}\n\nexport interface ListUsersResponse extends _ListUsersResponse {\n    _builtin_original?: _ListUsersResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListUsersResponseImpl  implements _ListUsersResponse {\n    _builtin_original?: _ListUsersResponse = undefined;\n    public users: Array<User>  | undefined ;\n    public limit: number ;\n    public previous_page_email: string  | undefined ;\n    public next_page_email: string  | undefined ;\n    constructor(base: _ListUsersResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'users') >= 0) {\n            if (base.users) {\n                this.users = base.users.map((original) => newUserImpl(original));\n            } else {\n                this.users = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'previous_page_email') >= 0) {\n            this.previous_page_email = base.previous_page_email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'next_page_email') >= 0) {\n            this.next_page_email = base.next_page_email;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.users !== undefined) {\n            for (const item of this.users) {\n                if (item !== undefined && (item as UserImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListUsersResponseImpl(base: _ListUsersResponse): ListUsersResponseImpl {\n    return new ListUsersResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _WebAuthNEnrollmentSpec, WebAuthNEnrollmentSpec, WebAuthNEnrollmentSpecImpl, newWebAuthNEnrollmentSpecImpl } from './webAuthNEnrollmentSpec';\nimport { _WebAuthNEnrollmentStatus, WebAuthNEnrollmentStatus, WebAuthNEnrollmentStatusImpl, newWebAuthNEnrollmentStatusImpl } from './webAuthNEnrollmentStatus';\n\n\n/**\n * An object used for enrolling the user in the Time-based One-time Password method for Multi-factor authentication. This is based on the WebAuthN standard defined here https://www.w3.org/TR/webauthn/#enumdef-userverificationrequirement\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _WebAuthNEnrollment { \n    metadata?: MetadataWithId;\n    spec: WebAuthNEnrollmentSpec;\n    status?: WebAuthNEnrollmentStatus;\n}\n\nexport interface WebAuthNEnrollment extends _WebAuthNEnrollment {\n    _builtin_original?: _WebAuthNEnrollment;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class WebAuthNEnrollmentImpl  implements _WebAuthNEnrollment {\n    _builtin_original?: _WebAuthNEnrollment = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: WebAuthNEnrollmentSpec ;\n    public status: WebAuthNEnrollmentStatus  | undefined ;\n    constructor(base: _WebAuthNEnrollment) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newWebAuthNEnrollmentImpl(base: _WebAuthNEnrollment): WebAuthNEnrollmentImpl {\n    return new WebAuthNEnrollmentImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _WebAuthNEnrollment, WebAuthNEnrollment, WebAuthNEnrollmentImpl, newWebAuthNEnrollmentImpl } from './webAuthNEnrollment';\n\n\n/**\n * Response object for an challenge enrollment query\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListWebAuthNEnrollmentResponse { \n    /**\n     * List of WebAuthN enrollments\n     */\n    webauthn?: Array<WebAuthNEnrollment>;\n    /**\n     * Limit of issuers in the response\n     */\n    limit: number;\n}\n\nexport interface ListWebAuthNEnrollmentResponse extends _ListWebAuthNEnrollmentResponse {\n    _builtin_original?: _ListWebAuthNEnrollmentResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListWebAuthNEnrollmentResponseImpl  implements _ListWebAuthNEnrollmentResponse {\n    _builtin_original?: _ListWebAuthNEnrollmentResponse = undefined;\n    public webauthn: Array<WebAuthNEnrollment>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListWebAuthNEnrollmentResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'webauthn') >= 0) {\n            if (base.webauthn) {\n                this.webauthn = base.webauthn.map((original) => newWebAuthNEnrollmentImpl(original));\n            } else {\n                this.webauthn = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.webauthn !== undefined) {\n            for (const item of this.webauthn) {\n                if (item !== undefined && (item as WebAuthNEnrollmentImpl)._remove_builtin_extensions !== undefined) {\n                    (item as WebAuthNEnrollmentImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListWebAuthNEnrollmentResponseImpl(base: _ListWebAuthNEnrollmentResponse): ListWebAuthNEnrollmentResponseImpl {\n    return new ListWebAuthNEnrollmentResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A collection of well known information about the issuer that is available to any authenticated user that is apart of the organisation the issuer is associated with. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _WellKnownIssuerInfo { \n    /**\n     * Unique identifier\n     */\n    readonly issuer_id?: string;\n    /**\n     * A list of supported MFA methods. An empty list implies that no MFA methods are acceptable\n     */\n    supported_mfa_methods: Array<string>;\n}\n\nexport interface WellKnownIssuerInfo extends _WellKnownIssuerInfo {\n    _builtin_original?: _WellKnownIssuerInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class WellKnownIssuerInfoImpl  implements _WellKnownIssuerInfo {\n    _builtin_original?: _WellKnownIssuerInfo = undefined;\n    public readonly issuer_id: string  | undefined ;\n    public supported_mfa_methods: Array<string> ;\n    constructor(base: _WellKnownIssuerInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'issuer_id') >= 0) {\n            this.issuer_id = base.issuer_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'supported_mfa_methods') >= 0) {\n            this.supported_mfa_methods = base.supported_mfa_methods;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newWellKnownIssuerInfoImpl(base: _WellKnownIssuerInfo): WellKnownIssuerInfoImpl {\n    return new WellKnownIssuerInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _WellKnownIssuerInfo, WellKnownIssuerInfo, WellKnownIssuerInfoImpl, newWellKnownIssuerInfoImpl } from './wellKnownIssuerInfo';\n\n\n/**\n * List of well known issuer information\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListWellKnownIssuerInfo { \n    /**\n     * List of well known issuer info\n     */\n    well_known_info?: Array<WellKnownIssuerInfo>;\n    /**\n     * Limit of issuers in the response\n     */\n    limit: number;\n}\n\nexport interface ListWellKnownIssuerInfo extends _ListWellKnownIssuerInfo {\n    _builtin_original?: _ListWellKnownIssuerInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListWellKnownIssuerInfoImpl  implements _ListWellKnownIssuerInfo {\n    _builtin_original?: _ListWellKnownIssuerInfo = undefined;\n    public well_known_info: Array<WellKnownIssuerInfo>  | undefined ;\n    public limit: number ;\n    constructor(base: _ListWellKnownIssuerInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'well_known_info') >= 0) {\n            if (base.well_known_info) {\n                this.well_known_info = base.well_known_info.map((original) => newWellKnownIssuerInfoImpl(original));\n            } else {\n                this.well_known_info = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.well_known_info !== undefined) {\n            for (const item of this.well_known_info) {\n                if (item !== undefined && (item as WellKnownIssuerInfoImpl)._remove_builtin_extensions !== undefined) {\n                    (item as WellKnownIssuerInfoImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListWellKnownIssuerInfoImpl(base: _ListWellKnownIssuerInfo): ListWellKnownIssuerInfoImpl {\n    return new ListWellKnownIssuerInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _X509Certificate, X509Certificate, X509CertificateImpl, newX509CertificateImpl } from './x509Certificate';\n\n\n/**\n * Response object for X509Certificate list\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ListX509CertificateResponse { \n    /**\n     * List of X509Certificate\n     */\n    certificates: Array<X509Certificate>;\n    /**\n     * Limit on the number of rows in the response\n     */\n    limit: number;\n}\n\nexport interface ListX509CertificateResponse extends _ListX509CertificateResponse {\n    _builtin_original?: _ListX509CertificateResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ListX509CertificateResponseImpl  implements _ListX509CertificateResponse {\n    _builtin_original?: _ListX509CertificateResponse = undefined;\n    public certificates: Array<X509Certificate> ;\n    public limit: number ;\n    constructor(base: _ListX509CertificateResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'certificates') >= 0) {\n            if (base.certificates) {\n                this.certificates = base.certificates.map((original) => newX509CertificateImpl(original));\n            } else {\n                this.certificates = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.certificates !== undefined) {\n            for (const item of this.certificates) {\n                if (item !== undefined && (item as X509CertificateImpl)._remove_builtin_extensions !== undefined) {\n                    (item as X509CertificateImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newListX509CertificateResponseImpl(base: _ListX509CertificateResponse): ListX509CertificateResponseImpl {\n    return new ListX509CertificateResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Local authentication upstream identity providers for example an Agilicus Agent running onsite.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LocalAuthUpstreamConfig { \n    /**\n     * Uniquely identifies the upstream resource providing the local authentication for instance an Agilicus Agent Connector ID.\n     */\n    upstream_id: string;\n    /**\n     * If The domain this local upstream provides is incorrect, use this to overide it to some known correct value\n     */\n    upstream_domain_name?: string;\n}\n\nexport interface LocalAuthUpstreamConfig extends _LocalAuthUpstreamConfig {\n    _builtin_original?: _LocalAuthUpstreamConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LocalAuthUpstreamConfigImpl  implements _LocalAuthUpstreamConfig {\n    _builtin_original?: _LocalAuthUpstreamConfig = undefined;\n    public upstream_id: string ;\n    public upstream_domain_name: string  | undefined ;\n    constructor(base: _LocalAuthUpstreamConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'upstream_id') >= 0) {\n            this.upstream_id = base.upstream_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_domain_name') >= 0) {\n            this.upstream_domain_name = base.upstream_domain_name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newLocalAuthUpstreamConfigImpl(base: _LocalAuthUpstreamConfig): LocalAuthUpstreamConfigImpl {\n    return new LocalAuthUpstreamConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configuration specific to injected client javascript, to determine if the client is logged in. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LoggedInInjection { \n    /**\n     * How logged in is determined, such as:   - automatic        automtically determine how the client is logged in   - fetch        logged in is determined with a fetch path \n     */\n    type: string;\n    /**\n     * The fetch path to determine if the client is logged in. A successful login to this api path will result in a 200 OK. \n     */\n    fetch_path?: string;\n}\n\nexport interface LoggedInInjection extends _LoggedInInjection {\n    _builtin_original?: _LoggedInInjection;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LoggedInInjectionImpl  implements _LoggedInInjection {\n    _builtin_original?: _LoggedInInjection = undefined;\n    public type: string ;\n    public fetch_path: string  | undefined ;\n    constructor(base: _LoggedInInjection) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'type') >= 0) {\n            this.type = base.type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'fetch_path') >= 0) {\n            this.fetch_path = base.fetch_path;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newLoggedInInjectionImpl(base: _LoggedInInjection): LoggedInInjectionImpl {\n    return new LoggedInInjectionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _FormInjection, FormInjection, FormInjectionImpl, newFormInjectionImpl } from './formInjection';\nimport { _FetchInjection, FetchInjection, FetchInjectionImpl, newFetchInjectionImpl } from './fetchInjection';\nimport { _LoggedInInjection, LoggedInInjection, LoggedInInjectionImpl, newLoggedInInjectionImpl } from './loggedInInjection';\n\n\n/**\n * Configuration specific to injected client javascript. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LoginInjection { \n    /**\n     * The type of login injection handled. Supported values are:  - form       http form based authentication, can be application/www-form-urlencoded or multipart/form-data  - automatic       Injection script will attempt to determine the type of login authentication automatically  - bearer       Bearer type authentication (eg. token)  - basic       http basic auth type authentication \n     */\n    type: string;\n    /**\n     * Depending on the type of login handled, for example in form based login,  this property can be used by the form to signal to the backend connector facilitor  handling the login that the form should be handled as a login and populated. \n     */\n    inject_key_name?: string;\n    fetch_config?: FetchInjection;\n    logged_in_config?: LoggedInInjection;\n    form_config?: FormInjection;\n}\n\nexport interface LoginInjection extends _LoginInjection {\n    _builtin_original?: _LoginInjection;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LoginInjectionImpl  implements _LoginInjection {\n    _builtin_original?: _LoginInjection = undefined;\n    public type: string ;\n    public inject_key_name: string  | undefined ;\n    public fetch_config: FetchInjection  | undefined ;\n    public logged_in_config: LoggedInInjection  | undefined ;\n    public form_config: FormInjection  | undefined ;\n    constructor(base: _LoginInjection) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'type') >= 0) {\n            this.type = base.type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'inject_key_name') >= 0) {\n            this.inject_key_name = base.inject_key_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'fetch_config') >= 0) {\n            this.fetch_config = base.fetch_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'logged_in_config') >= 0) {\n            this.logged_in_config = base.logged_in_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'form_config') >= 0) {\n            this.form_config = base.form_config;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newLoginInjectionImpl(base: _LoginInjection): LoginInjectionImpl {\n    return new LoginInjectionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Information associated with a user\\'s login session.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LoginSession { \n    /**\n     * The id of the session.\n     */\n    session_id: string;\n    /**\n     * The number of logins that have occured with this session id\n     */\n    number_of_logins: number;\n    /**\n     * The number of failed multi-factor authentication challenges that have occured with this session id\n     */\n    number_of_failed_multi_factor_challenges: number;\n    /**\n     * The time of the user\\'s last login with an upstream identity provider if the policy supported single sign on.\n     */\n    single_sign_on_time: Date;\n    /**\n     * An aggregate condition representing the user\\'s authentication status in the session. This field is the result of user_is_authenticated_by_upstream OR\\'d with user_is_authenticated_by_cache \n     */\n    user_is_authenticated: boolean;\n    /**\n     * Indicates whether the user has been directly authenticated by an upstream identity provider\n     */\n    user_is_authenticated_by_upstream: boolean;\n    /**\n     * Indicates whether the user has been authenticated via a cached credential\n     */\n    user_is_authenticated_by_cache: boolean;\n}\n\nexport interface LoginSession extends _LoginSession {\n    _builtin_original?: _LoginSession;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LoginSessionImpl  implements _LoginSession {\n    _builtin_original?: _LoginSession = undefined;\n    public session_id: string ;\n    public number_of_logins: number ;\n    public number_of_failed_multi_factor_challenges: number ;\n    public single_sign_on_time: Date ;\n    public user_is_authenticated: boolean ;\n    public user_is_authenticated_by_upstream: boolean ;\n    public user_is_authenticated_by_cache: boolean ;\n    constructor(base: _LoginSession) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'session_id') >= 0) {\n            this.session_id = base.session_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'number_of_logins') >= 0) {\n            this.number_of_logins = base.number_of_logins;\n        }\n        if (Object.keys(base).findIndex(key => key === 'number_of_failed_multi_factor_challenges') >= 0) {\n            this.number_of_failed_multi_factor_challenges = base.number_of_failed_multi_factor_challenges;\n        }\n        if (Object.keys(base).findIndex(key => key === 'single_sign_on_time') >= 0) {\n            this.single_sign_on_time = base.single_sign_on_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_is_authenticated') >= 0) {\n            this.user_is_authenticated = base.user_is_authenticated;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_is_authenticated_by_upstream') >= 0) {\n            this.user_is_authenticated_by_upstream = base.user_is_authenticated_by_upstream;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_is_authenticated_by_cache') >= 0) {\n            this.user_is_authenticated_by_cache = base.user_is_authenticated_by_cache;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newLoginSessionImpl(base: _LoginSession): LoginSessionImpl {\n    return new LoginSessionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A request for looking up a set of guids \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _LookupRequest { \n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n    /**\n     * id to lookup\n     */\n    guids?: Array<string>;\n}\n\nexport interface LookupRequest extends _LookupRequest {\n    _builtin_original?: _LookupRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class LookupRequestImpl  implements _LookupRequest {\n    _builtin_original?: _LookupRequest = undefined;\n    public org_id: string  | undefined ;\n    public guids: Array<string>  | undefined ;\n    constructor(base: _LookupRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'guids') >= 0) {\n            this.guids = base.guids;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newLookupRequestImpl(base: _LookupRequest): LookupRequestImpl {\n    return new LookupRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MFAChallengeAnswerResult, MFAChallengeAnswerResult, MFAChallengeAnswerResultImpl, newMFAChallengeAnswerResultImpl } from './mFAChallengeAnswerResult';\n\n\n/**\n * The response to the MFAChallengeQuestion\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MFAChallengeAnswer { \n    result: MFAChallengeAnswerResult;\n}\n\nexport interface MFAChallengeAnswer extends _MFAChallengeAnswer {\n    _builtin_original?: _MFAChallengeAnswer;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MFAChallengeAnswerImpl  implements _MFAChallengeAnswer {\n    _builtin_original?: _MFAChallengeAnswer = undefined;\n    public result: MFAChallengeAnswerResult ;\n    constructor(base: _MFAChallengeAnswer) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'result') >= 0) {\n            this.result = base.result;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMFAChallengeAnswerImpl(base: _MFAChallengeAnswer): MFAChallengeAnswerImpl {\n    return new MFAChallengeAnswerImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The result of an MFAChallengeQuestion\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MFAChallengeAnswerResult { \n    /**\n     * The action to take as a result of the question. do_mfa - the user should be challenged to present a second factor for authentication dont_mfa - the user does not need to present a second factor for authentication. Proceed with the login workflow. This is depricated in favour of allow_login deny_login - the user should not be allowed to proceed. Terminate the login. allow_login - the user should be allowed to proceed with the login workflow. authenticate - the user should be directed to authenticate with the system typically via an upstream identity provider \n     */\n    action: MFAChallengeAnswerResult.ActionEnum;\n    /**\n     * The list of supported multi-factor challenge methods for the organisation\n     */\n    supported_mfa_methods: Array<string>;\n}\n\nexport interface MFAChallengeAnswerResult extends _MFAChallengeAnswerResult {\n    _builtin_original?: _MFAChallengeAnswerResult;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MFAChallengeAnswerResultImpl  implements _MFAChallengeAnswerResult {\n    _builtin_original?: _MFAChallengeAnswerResult = undefined;\n    public action: MFAChallengeAnswerResult.ActionEnum ;\n    public supported_mfa_methods: Array<string> ;\n    constructor(base: _MFAChallengeAnswerResult) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'action') >= 0) {\n            this.action = base.action;\n        }\n        if (Object.keys(base).findIndex(key => key === 'supported_mfa_methods') >= 0) {\n            this.supported_mfa_methods = base.supported_mfa_methods;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace MFAChallengeAnswerResult {\n    export type ActionEnum = 'do_mfa' | 'dont_mfa' | 'deny_login' | 'allow_login' | 'authenticate';\n    export const ActionEnum = {\n        do_mfa: 'do_mfa' as ActionEnum,\n        dont_mfa: 'dont_mfa' as ActionEnum,\n        deny_login: 'deny_login' as ActionEnum,\n        allow_login: 'allow_login' as ActionEnum,\n        authenticate: 'authenticate' as ActionEnum\n    };\n}\n\n\nexport function newMFAChallengeAnswerResultImpl(base: _MFAChallengeAnswerResult): MFAChallengeAnswerResultImpl {\n    return new MFAChallengeAnswerResultImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configuration for a specific multi-factor authentication challenge.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MFAChallengeMethodSpec { \n    /**\n     * The priority of this challenge method. Priority is how the user specifies which challenge method to be notified with if that method is supported.  A priority of 1 is the highest priority and indicates that the user prefers this challenge method.\n     */\n    priority: number;\n    /**\n     * The type of challenge to issue. This controls how the user is informed of the challenge, as well as how the challenge can be satisfied. The follow types are supported:   - sms:  a `sms` challenge informs the user via text message of the challenge. The challenge can     be answered via the link provided in the text message. The user can deny the challenge via this     mechanism as well.   - web_push: a `web_push` challenge informs the user of the challenge on every device they have   registered via the web push (rfc8030) mechanism. If the user accepts via the link provided in   the web push, the challenge will be satisfied. The user can deny the challenge via this   mechanism as well.   - totp: a time-based one-time password challenge allows the user to enter the code from their registered   - webauthn: a challenge issued for a specific device the user has possession of. Either a yubikey, or a phone that has a Trusted Platform Module.   device and application.   - one_time_use_action: a challenge whose acceptance or rejection takes an action on behalf of a user. Typically this is used   when wanting to respond to events through a messaging platform.   - code: a one time use challenge which may be redeemed through a code. This code is typically shared to the user who copies it from one machine   to another. This is a variation of web_push where, instead of sending the code via webpush, the caller runs their own protocol to communicate it.   The same answer mechanism (a link) is used. enum: [sms, web_push, totp, webauthn, one_time_use_action, code] example: web_push \n     */\n    challenge_type: string;\n    /**\n     * The specific device to issue the challenge to. The meaning of this field may change depending on the challenge type specified.\n     */\n    endpoint: string;\n    /**\n     * The origin the method was registered at. This is only used if the challenge type is WebAuthN\n     */\n    origin?: string;\n    /**\n     * A descriptive name the user can set to differentiate their challenge methods.\n     */\n    nickname?: string;\n    /**\n     * The state of the challenge method. A value of true indicates that the method is active. A value of false indicates that the method is disabled. When a method is disabled it will not be used as an authentication factor when the user logs in. \n     */\n    enabled?: boolean;\n}\n\nexport interface MFAChallengeMethodSpec extends _MFAChallengeMethodSpec {\n    _builtin_original?: _MFAChallengeMethodSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MFAChallengeMethodSpecImpl  implements _MFAChallengeMethodSpec {\n    _builtin_original?: _MFAChallengeMethodSpec = undefined;\n    public priority: number ;\n    public challenge_type: string ;\n    public endpoint: string ;\n    public origin: string  | undefined ;\n    public nickname: string  | undefined ;\n    public enabled: boolean  | undefined ;\n    constructor(base: _MFAChallengeMethodSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'priority') >= 0) {\n            this.priority = base.priority;\n        }\n        if (Object.keys(base).findIndex(key => key === 'challenge_type') >= 0) {\n            this.challenge_type = base.challenge_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'endpoint') >= 0) {\n            this.endpoint = base.endpoint;\n        }\n        if (Object.keys(base).findIndex(key => key === 'origin') >= 0) {\n            this.origin = base.origin;\n        }\n        if (Object.keys(base).findIndex(key => key === 'nickname') >= 0) {\n            this.nickname = base.nickname;\n        }\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMFAChallengeMethodSpecImpl(base: _MFAChallengeMethodSpec): MFAChallengeMethodSpecImpl {\n    return new MFAChallengeMethodSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MFAChallengeQuestionInput, MFAChallengeQuestionInput, MFAChallengeQuestionInputImpl, newMFAChallengeQuestionInputImpl } from './mFAChallengeQuestionInput';\n\n\n/**\n * A question to the Open Policy Agent to determine if a multi-factor authentication challenge should occur.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MFAChallengeQuestion { \n    input: MFAChallengeQuestionInput;\n}\n\nexport interface MFAChallengeQuestion extends _MFAChallengeQuestion {\n    _builtin_original?: _MFAChallengeQuestion;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MFAChallengeQuestionImpl  implements _MFAChallengeQuestion {\n    _builtin_original?: _MFAChallengeQuestion = undefined;\n    public input: MFAChallengeQuestionInput ;\n    constructor(base: _MFAChallengeQuestion) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'input') >= 0) {\n            this.input = base.input;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMFAChallengeQuestionImpl(base: _MFAChallengeQuestion): MFAChallengeQuestionImpl {\n    return new MFAChallengeQuestionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MFAChallengeQuestionLoginInfo, MFAChallengeQuestionLoginInfo, MFAChallengeQuestionLoginInfoImpl, newMFAChallengeQuestionLoginInfoImpl } from './mFAChallengeQuestionLoginInfo';\n\n\n/**\n * A collection of input for the challenge question policy\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MFAChallengeQuestionInput { \n    login_info: MFAChallengeQuestionLoginInfo;\n}\n\nexport interface MFAChallengeQuestionInput extends _MFAChallengeQuestionInput {\n    _builtin_original?: _MFAChallengeQuestionInput;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MFAChallengeQuestionInputImpl  implements _MFAChallengeQuestionInput {\n    _builtin_original?: _MFAChallengeQuestionInput = undefined;\n    public login_info: MFAChallengeQuestionLoginInfo ;\n    constructor(base: _MFAChallengeQuestionInput) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'login_info') >= 0) {\n            this.login_info = base.login_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMFAChallengeQuestionInputImpl(base: _MFAChallengeQuestionInput): MFAChallengeQuestionInputImpl {\n    return new MFAChallengeQuestionInputImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LoginSession, LoginSession, LoginSessionImpl, newLoginSessionImpl } from './loginSession';\nimport { _User, User, UserImpl, newUserImpl } from './user';\nimport { _MFAChallengeMethod, MFAChallengeMethod, MFAChallengeMethodImpl, newMFAChallengeMethodImpl } from './mFAChallengeMethod';\nimport { _AuthenticationFederationInfo, AuthenticationFederationInfo, AuthenticationFederationInfoImpl, newAuthenticationFederationInfoImpl } from './authenticationFederationInfo';\n\n\n/**\n * The login information required when asking the Open Policy Agent to determine if a multi-factor authentication challenge should occur.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MFAChallengeQuestionLoginInfo { \n    /**\n     * The user\\'s preference regarding multi-factor authentication\n     */\n    user_preference: MFAChallengeQuestionLoginInfo.UserPreferenceEnum;\n    /**\n     * The common name of the client initiating the request on behalf of the user\n     */\n    client_id: string;\n    /**\n     * The guid of the client initiating the request on behalf of the user\n     */\n    client_guid: string;\n    /**\n     * The id of the organisation for the issuer the user is logging in through\n     */\n    issuer_org_id: string;\n    /**\n     * The guid of the issuer the user is logging into.\n     */\n    issuer_guid: string;\n    /**\n     * The id of the organisation the user is a member of\n     */\n    org_id: string;\n    /**\n     * The id of the user requesting access\n     */\n    user_id: string;\n    user_object?: User;\n    login_session?: LoginSession;\n    /**\n     * The upstream IDP that the user is authenticating against\n     */\n    upstream_idp: string;\n    /**\n     * The source ip address of the user\\'s request. Both IPv4 and IPv6 address are supported\n     */\n    ip_address: string;\n    /**\n     * Whether the amr claim is present in the response from the upstream\n     */\n    amr_claim_present: boolean;\n    /**\n     * The time of the user\\'s last successful multi-factor authenticated login\n     */\n    last_mfa_login?: Date;\n    /**\n     * The list of a user\\'s multi-factor challenge methods\n     */\n    user_mfa_preferences?: Array<MFAChallengeMethod>;\n    authenticated_federation_info?: AuthenticationFederationInfo;\n}\n\nexport interface MFAChallengeQuestionLoginInfo extends _MFAChallengeQuestionLoginInfo {\n    _builtin_original?: _MFAChallengeQuestionLoginInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MFAChallengeQuestionLoginInfoImpl  implements _MFAChallengeQuestionLoginInfo {\n    _builtin_original?: _MFAChallengeQuestionLoginInfo = undefined;\n    public user_preference: MFAChallengeQuestionLoginInfo.UserPreferenceEnum ;\n    public client_id: string ;\n    public client_guid: string ;\n    public issuer_org_id: string ;\n    public issuer_guid: string ;\n    public org_id: string ;\n    public user_id: string ;\n    public user_object: User  | undefined ;\n    public login_session: LoginSession  | undefined ;\n    public upstream_idp: string ;\n    public ip_address: string ;\n    public amr_claim_present: boolean ;\n    public last_mfa_login: Date  | undefined ;\n    public user_mfa_preferences: Array<MFAChallengeMethod>  | undefined ;\n    public authenticated_federation_info: AuthenticationFederationInfo  | undefined ;\n    constructor(base: _MFAChallengeQuestionLoginInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_preference') >= 0) {\n            this.user_preference = base.user_preference;\n        }\n        if (Object.keys(base).findIndex(key => key === 'client_id') >= 0) {\n            this.client_id = base.client_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'client_guid') >= 0) {\n            this.client_guid = base.client_guid;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer_org_id') >= 0) {\n            this.issuer_org_id = base.issuer_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer_guid') >= 0) {\n            this.issuer_guid = base.issuer_guid;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_object') >= 0) {\n            this.user_object = base.user_object;\n        }\n        if (Object.keys(base).findIndex(key => key === 'login_session') >= 0) {\n            this.login_session = base.login_session;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_idp') >= 0) {\n            this.upstream_idp = base.upstream_idp;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ip_address') >= 0) {\n            this.ip_address = base.ip_address;\n        }\n        if (Object.keys(base).findIndex(key => key === 'amr_claim_present') >= 0) {\n            this.amr_claim_present = base.amr_claim_present;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_mfa_login') >= 0) {\n            this.last_mfa_login = base.last_mfa_login;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_mfa_preferences') >= 0) {\n            if (base.user_mfa_preferences) {\n                this.user_mfa_preferences = base.user_mfa_preferences.map((original) => newMFAChallengeMethodImpl(original));\n            } else {\n                this.user_mfa_preferences = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'authenticated_federation_info') >= 0) {\n            this.authenticated_federation_info = base.authenticated_federation_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.user_mfa_preferences !== undefined) {\n            for (const item of this.user_mfa_preferences) {\n                if (item !== undefined && (item as MFAChallengeMethodImpl)._remove_builtin_extensions !== undefined) {\n                    (item as MFAChallengeMethodImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace MFAChallengeQuestionLoginInfo {\n    export type UserPreferenceEnum = 'always' | 'organisation_policy';\n    export const UserPreferenceEnum = {\n        always: 'always' as UserPreferenceEnum,\n        organisation_policy: 'organisation_policy' as UserPreferenceEnum\n    };\n}\n\n\nexport function newMFAChallengeQuestionLoginInfoImpl(base: _MFAChallengeQuestionLoginInfo): MFAChallengeQuestionLoginInfoImpl {\n    return new MFAChallengeQuestionLoginInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MFAEnrollmentAnswerResult, MFAEnrollmentAnswerResult, MFAEnrollmentAnswerResultImpl, newMFAEnrollmentAnswerResultImpl } from './mFAEnrollmentAnswerResult';\n\n\n/**\n * The response to the MFAEnrollmentQuestion\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MFAEnrollmentAnswer { \n    result: MFAEnrollmentAnswerResult;\n}\n\nexport interface MFAEnrollmentAnswer extends _MFAEnrollmentAnswer {\n    _builtin_original?: _MFAEnrollmentAnswer;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MFAEnrollmentAnswerImpl  implements _MFAEnrollmentAnswer {\n    _builtin_original?: _MFAEnrollmentAnswer = undefined;\n    public result: MFAEnrollmentAnswerResult ;\n    constructor(base: _MFAEnrollmentAnswer) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'result') >= 0) {\n            this.result = base.result;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMFAEnrollmentAnswerImpl(base: _MFAEnrollmentAnswer): MFAEnrollmentAnswerImpl {\n    return new MFAEnrollmentAnswerImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The result of an MFAEnrollmentQuestion\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MFAEnrollmentAnswerResult { \n    /**\n     * The action to take as a result of the question. enroll - the user should be prompted to enroll a multi-factor authentication method dont_enroll - the user does not need to enroll a multi-factor authentication method enrollment_error - the user would be prompted to enroll but is unable to enroll. An example of this is if the enrollment request is outside the time window allowed by an organisation \n     */\n    action: MFAEnrollmentAnswerResult.ActionEnum;\n    /**\n     * The list of supported multi-factor challenge methods for the organisation\n     */\n    supported_mfa_methods: Array<string>;\n}\n\nexport interface MFAEnrollmentAnswerResult extends _MFAEnrollmentAnswerResult {\n    _builtin_original?: _MFAEnrollmentAnswerResult;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MFAEnrollmentAnswerResultImpl  implements _MFAEnrollmentAnswerResult {\n    _builtin_original?: _MFAEnrollmentAnswerResult = undefined;\n    public action: MFAEnrollmentAnswerResult.ActionEnum ;\n    public supported_mfa_methods: Array<string> ;\n    constructor(base: _MFAEnrollmentAnswerResult) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'action') >= 0) {\n            this.action = base.action;\n        }\n        if (Object.keys(base).findIndex(key => key === 'supported_mfa_methods') >= 0) {\n            this.supported_mfa_methods = base.supported_mfa_methods;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace MFAEnrollmentAnswerResult {\n    export type ActionEnum = 'enroll' | 'dont_enroll' | 'enrollment_error';\n    export const ActionEnum = {\n        enroll: 'enroll' as ActionEnum,\n        dont_enroll: 'dont_enroll' as ActionEnum,\n        enrollment_error: 'enrollment_error' as ActionEnum\n    };\n}\n\n\nexport function newMFAEnrollmentAnswerResultImpl(base: _MFAEnrollmentAnswerResult): MFAEnrollmentAnswerResultImpl {\n    return new MFAEnrollmentAnswerResultImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MFAEnrollmentQuestionInput, MFAEnrollmentQuestionInput, MFAEnrollmentQuestionInputImpl, newMFAEnrollmentQuestionInputImpl } from './mFAEnrollmentQuestionInput';\n\n\n/**\n * A question to the Open Policy Agent to determine if a multi-factor authentication enrollment should occur.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MFAEnrollmentQuestion { \n    input: MFAEnrollmentQuestionInput;\n}\n\nexport interface MFAEnrollmentQuestion extends _MFAEnrollmentQuestion {\n    _builtin_original?: _MFAEnrollmentQuestion;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MFAEnrollmentQuestionImpl  implements _MFAEnrollmentQuestion {\n    _builtin_original?: _MFAEnrollmentQuestion = undefined;\n    public input: MFAEnrollmentQuestionInput ;\n    constructor(base: _MFAEnrollmentQuestion) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'input') >= 0) {\n            this.input = base.input;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMFAEnrollmentQuestionImpl(base: _MFAEnrollmentQuestion): MFAEnrollmentQuestionImpl {\n    return new MFAEnrollmentQuestionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MFAEnrollmentQuestionLoginInfo, MFAEnrollmentQuestionLoginInfo, MFAEnrollmentQuestionLoginInfoImpl, newMFAEnrollmentQuestionLoginInfoImpl } from './mFAEnrollmentQuestionLoginInfo';\n\n\n/**\n * A collection of input for the enrollment question policy\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MFAEnrollmentQuestionInput { \n    login_info: MFAEnrollmentQuestionLoginInfo;\n}\n\nexport interface MFAEnrollmentQuestionInput extends _MFAEnrollmentQuestionInput {\n    _builtin_original?: _MFAEnrollmentQuestionInput;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MFAEnrollmentQuestionInputImpl  implements _MFAEnrollmentQuestionInput {\n    _builtin_original?: _MFAEnrollmentQuestionInput = undefined;\n    public login_info: MFAEnrollmentQuestionLoginInfo ;\n    constructor(base: _MFAEnrollmentQuestionInput) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'login_info') >= 0) {\n            this.login_info = base.login_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMFAEnrollmentQuestionInputImpl(base: _MFAEnrollmentQuestionInput): MFAEnrollmentQuestionInputImpl {\n    return new MFAEnrollmentQuestionInputImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A question to the Open Policy Agent to determine if a multi-factor authentication enrollment should occur.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MFAEnrollmentQuestionLoginInfo { \n    /**\n     * The id of the organisation for the issuer the user is logging in through. This determines what policy to query\n     */\n    issuer_org_id: string;\n    /**\n     * The expiry time for multi-factor authentication enrollment. Requests to enroll outside this time bound will be denied.\n     */\n    enrollment_expiry: Date;\n    /**\n     * The list of multi-factor challenge methods the user has set up.\n     */\n    user_mfa_methods: Array<string>;\n}\n\nexport interface MFAEnrollmentQuestionLoginInfo extends _MFAEnrollmentQuestionLoginInfo {\n    _builtin_original?: _MFAEnrollmentQuestionLoginInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MFAEnrollmentQuestionLoginInfoImpl  implements _MFAEnrollmentQuestionLoginInfo {\n    _builtin_original?: _MFAEnrollmentQuestionLoginInfo = undefined;\n    public issuer_org_id: string ;\n    public enrollment_expiry: Date ;\n    public user_mfa_methods: Array<string> ;\n    constructor(base: _MFAEnrollmentQuestionLoginInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'issuer_org_id') >= 0) {\n            this.issuer_org_id = base.issuer_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'enrollment_expiry') >= 0) {\n            this.enrollment_expiry = base.enrollment_expiry;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_mfa_methods') >= 0) {\n            this.user_mfa_methods = base.user_mfa_methods;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMFAEnrollmentQuestionLoginInfoImpl(base: _MFAEnrollmentQuestionLoginInfo): MFAEnrollmentQuestionLoginInfoImpl {\n    return new MFAEnrollmentQuestionLoginInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Requires that users present a second factor within the given time period when trying to access resources matching the provided labels \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MFAPolicyTemplate { \n    /**\n     * Challenge the user if they have not presented a second factor for the current session in the last N seconds. \n     */\n    seconds_since_last_challenge: number;\n    /**\n     * Restrict the challenge to accesses for resources with one of these labels. \n     */\n    labels: Array<string>;\n    /**\n     * The descriminator for the PolicyTemplate. Set this to `mfa`\n     */\n    template_type: string;\n}\n\nexport interface MFAPolicyTemplate extends _MFAPolicyTemplate {\n    _builtin_original?: _MFAPolicyTemplate;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MFAPolicyTemplateImpl  implements _MFAPolicyTemplate {\n    _builtin_original?: _MFAPolicyTemplate = undefined;\n    public seconds_since_last_challenge: number ;\n    public labels: Array<string> ;\n    public template_type: string ;\n    constructor(base: _MFAPolicyTemplate) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'seconds_since_last_challenge') >= 0) {\n            this.seconds_since_last_challenge = base.seconds_since_last_challenge;\n        }\n        if (Object.keys(base).findIndex(key => key === 'labels') >= 0) {\n            this.labels = base.labels;\n        }\n        if (Object.keys(base).findIndex(key => key === 'template_type') >= 0) {\n            this.template_type = base.template_type;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMFAPolicyTemplateImpl(base: _MFAPolicyTemplate): MFAPolicyTemplateImpl {\n    return new MFAPolicyTemplateImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Token, Token, TokenImpl, newTokenImpl } from './token';\n\n\n/**\n * Response object for a multi-org introspection\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ManyOrgTokenIntrospectResponse { \n    /**\n     * List of sub org\\'s tokens\n     */\n    sub_org_results: Array<Token>;\n    primary_token: Token;\n}\n\nexport interface ManyOrgTokenIntrospectResponse extends _ManyOrgTokenIntrospectResponse {\n    _builtin_original?: _ManyOrgTokenIntrospectResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ManyOrgTokenIntrospectResponseImpl  implements _ManyOrgTokenIntrospectResponse {\n    _builtin_original?: _ManyOrgTokenIntrospectResponse = undefined;\n    public sub_org_results: Array<Token> ;\n    public primary_token: Token ;\n    constructor(base: _ManyOrgTokenIntrospectResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'sub_org_results') >= 0) {\n            if (base.sub_org_results) {\n                this.sub_org_results = base.sub_org_results.map((original) => newTokenImpl(original));\n            } else {\n                this.sub_org_results = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'primary_token') >= 0) {\n            this.primary_token = base.primary_token;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.sub_org_results !== undefined) {\n            for (const item of this.sub_org_results) {\n                if (item !== undefined && (item as TokenImpl)._remove_builtin_extensions !== undefined) {\n                    (item as TokenImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newManyOrgTokenIntrospectResponseImpl(base: _ManyOrgTokenIntrospectResponse): ManyOrgTokenIntrospectResponseImpl {\n    return new ManyOrgTokenIntrospectResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MapAttributesAnswerResult, MapAttributesAnswerResult, MapAttributesAnswerResultImpl, newMapAttributesAnswerResultImpl } from './mapAttributesAnswerResult';\n\n\n/**\n * The answer to the attribute mapping. `result` holds the details. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MapAttributesAnswer { \n    result: MapAttributesAnswerResult;\n}\n\nexport interface MapAttributesAnswer extends _MapAttributesAnswer {\n    _builtin_original?: _MapAttributesAnswer;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MapAttributesAnswerImpl  implements _MapAttributesAnswer {\n    _builtin_original?: _MapAttributesAnswer = undefined;\n    public result: MapAttributesAnswerResult ;\n    constructor(base: _MapAttributesAnswer) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'result') >= 0) {\n            this.result = base.result;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMapAttributesAnswerImpl(base: _MapAttributesAnswer): MapAttributesAnswerImpl {\n    return new MapAttributesAnswerImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The result of the attribute mapping. Any successfully mapped attributes will be contained in `mapped_attributes`. Any that failed will not be present. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MapAttributesAnswerResult { \n    /**\n     * The resulting attributes. Note that they can be of any type. The key of this object is the desired name of the attribute. The value is the value retrieved from the user information. \n     */\n    mapped_attributes: { [key: string]: any | undefined; };\n}\n\nexport interface MapAttributesAnswerResult extends _MapAttributesAnswerResult {\n    _builtin_original?: _MapAttributesAnswerResult;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MapAttributesAnswerResultImpl  implements _MapAttributesAnswerResult {\n    _builtin_original?: _MapAttributesAnswerResult = undefined;\n    public mapped_attributes: { [key: string]: any | undefined; } ;\n    constructor(base: _MapAttributesAnswerResult) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'mapped_attributes') >= 0) {\n            this.mapped_attributes = base.mapped_attributes;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMapAttributesAnswerResultImpl(base: _MapAttributesAnswerResult): MapAttributesAnswerResultImpl {\n    return new MapAttributesAnswerResultImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MapAttributesQuestionInput, MapAttributesQuestionInput, MapAttributesQuestionInputImpl, newMapAttributesQuestionInputImpl } from './mapAttributesQuestionInput';\n\n\n/**\n * A question to the Open Policy Agent to map information about the user to a set of flattened attributes. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MapAttributesQuestion { \n    input: MapAttributesQuestionInput;\n}\n\nexport interface MapAttributesQuestion extends _MapAttributesQuestion {\n    _builtin_original?: _MapAttributesQuestion;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MapAttributesQuestionImpl  implements _MapAttributesQuestion {\n    _builtin_original?: _MapAttributesQuestion = undefined;\n    public input: MapAttributesQuestionInput ;\n    constructor(base: _MapAttributesQuestion) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'input') >= 0) {\n            this.input = base.input;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMapAttributesQuestionImpl(base: _MapAttributesQuestion): MapAttributesQuestionImpl {\n    return new MapAttributesQuestionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MapAttributesQuestionLoginInfo, MapAttributesQuestionLoginInfo, MapAttributesQuestionLoginInfoImpl, newMapAttributesQuestionLoginInfoImpl } from './mapAttributesQuestionLoginInfo';\n\n\n/**\n * A collection of input for the map attributes question. This contains both the user about whom we want to map attributes and the set of attributes we want to map. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MapAttributesQuestionInput { \n    login_info: MapAttributesQuestionLoginInfo;\n}\n\nexport interface MapAttributesQuestionInput extends _MapAttributesQuestionInput {\n    _builtin_original?: _MapAttributesQuestionInput;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MapAttributesQuestionInputImpl  implements _MapAttributesQuestionInput {\n    _builtin_original?: _MapAttributesQuestionInput = undefined;\n    public login_info: MapAttributesQuestionLoginInfo ;\n    constructor(base: _MapAttributesQuestionInput) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'login_info') >= 0) {\n            this.login_info = base.login_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMapAttributesQuestionInputImpl(base: _MapAttributesQuestionInput): MapAttributesQuestionInputImpl {\n    return new MapAttributesQuestionInputImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserSummary, UserSummary, UserSummaryImpl, newUserSummaryImpl } from './userSummary';\n\n\n/**\n * The information about the user collected from the authentication system used to build the attribute mapping. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MapAttributesQuestionLoginInfo { \n    user_object: UserSummary;\n    /**\n     * The guid of the client initiating the request on behalf of the user\n     */\n    client_guid: string;\n    /**\n     * The guid of the issuer the user is logging into.\n     */\n    issuer_guid: string;\n}\n\nexport interface MapAttributesQuestionLoginInfo extends _MapAttributesQuestionLoginInfo {\n    _builtin_original?: _MapAttributesQuestionLoginInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MapAttributesQuestionLoginInfoImpl  implements _MapAttributesQuestionLoginInfo {\n    _builtin_original?: _MapAttributesQuestionLoginInfo = undefined;\n    public user_object: UserSummary ;\n    public client_guid: string ;\n    public issuer_guid: string ;\n    constructor(base: _MapAttributesQuestionLoginInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_object') >= 0) {\n            this.user_object = base.user_object;\n        }\n        if (Object.keys(base).findIndex(key => key === 'client_guid') >= 0) {\n            this.client_guid = base.client_guid;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer_guid') >= 0) {\n            this.issuer_guid = base.issuer_guid;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMapAttributesQuestionLoginInfoImpl(base: _MapAttributesQuestionLoginInfo): MapAttributesQuestionLoginInfoImpl {\n    return new MapAttributesQuestionLoginInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * This condition is evaluated against the users last mfa proof time, and if that time has exceeded, the condition evaluates to true. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MaxMFAProofRuleCondition { \n    /**\n     * The discriminator for the condition\n     */\n    condition_type: string;\n    /**\n     * The max number of seconds allowed before MFA is required. \n     */\n    max_seconds: number;\n}\n\nexport interface MaxMFAProofRuleCondition extends _MaxMFAProofRuleCondition {\n    _builtin_original?: _MaxMFAProofRuleCondition;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MaxMFAProofRuleConditionImpl  implements _MaxMFAProofRuleCondition {\n    _builtin_original?: _MaxMFAProofRuleCondition = undefined;\n    public condition_type: string ;\n    public max_seconds: number ;\n    constructor(base: _MaxMFAProofRuleCondition) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'condition_type') >= 0) {\n            this.condition_type = base.condition_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'max_seconds') >= 0) {\n            this.max_seconds = base.max_seconds;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMaxMFAProofRuleConditionImpl(base: _MaxMFAProofRuleCondition): MaxMFAProofRuleConditionImpl {\n    return new MaxMFAProofRuleConditionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Memory info \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MemoryInfo { \n    /**\n     * The memory type\n     */\n    type?: string;\n    /**\n     * The memory speed, in Mhz.\n     */\n    speed?: number;\n    /**\n     * The total size of memory, in Bytes.\n     */\n    size?: number;\n}\n\nexport interface MemoryInfo extends _MemoryInfo {\n    _builtin_original?: _MemoryInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MemoryInfoImpl  implements _MemoryInfo {\n    _builtin_original?: _MemoryInfo = undefined;\n    public type: string  | undefined ;\n    public speed: number  | undefined ;\n    public size: number  | undefined ;\n    constructor(base: _MemoryInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'type') >= 0) {\n            this.type = base.type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'speed') >= 0) {\n            this.speed = base.speed;\n        }\n        if (Object.keys(base).findIndex(key => key === 'size') >= 0) {\n            this.size = base.size;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMemoryInfoImpl(base: _MemoryInfo): MemoryInfoImpl {\n    return new MemoryInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An action-button (e.g. as in WebPush) in a message\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MessageAction { \n    /**\n     * The text the user is shown\n     */\n    title?: string;\n    /**\n     * the URI to invoke (with context) when selected\n     */\n    uri?: string;\n    /**\n     * the URI to an icon-button (if supported)\n     */\n    icon?: string;\n}\n\nexport interface MessageAction extends _MessageAction {\n    _builtin_original?: _MessageAction;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MessageActionImpl  implements _MessageAction {\n    _builtin_original?: _MessageAction = undefined;\n    public title: string  | undefined ;\n    public uri: string  | undefined ;\n    public icon: string  | undefined ;\n    constructor(base: _MessageAction) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'title') >= 0) {\n            this.title = base.title;\n        }\n        if (Object.keys(base).findIndex(key => key === 'uri') >= 0) {\n            this.uri = base.uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'icon') >= 0) {\n            this.icon = base.icon;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMessageActionImpl(base: _MessageAction): MessageActionImpl {\n    return new MessageActionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MessageAction, MessageAction, MessageActionImpl, newMessageActionImpl } from './messageAction';\nimport { _MessageTag, MessageTag, MessageTagImpl, newMessageTagImpl } from './messageTag';\n\n\n/**\n * A message to be delivered to a user. This is inspired by Material Cards (https://material.io/components/cards#anatomy), but, constrained by specific output methods. SMS can only deliver a string. WebPush can deliver a Card. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _Message { \n    /**\n     * Unique identifier\n     */\n    readonly id?: string;\n    /**\n     * The title of the message (if medium allows)\n     */\n    title?: string;\n    /**\n     * The sub-header of the message (if medium allows)\n     */\n    sub_header?: string;\n    /**\n     * The icon (uri) of the message (if medium allows)\n     */\n    icon?: string;\n    /**\n     * The image (uri) of the message (if medium allows)\n     */\n    image?: string;\n    /**\n     * The text string of the message\n     */\n    text: string;\n    /**\n     * The overall uri of the message (eg if clicked on). In some medium (e.g. Chrome WebPush) we can have individual actions, in others (e.g. Firefox WebPush) we only get the entire message as link. \n     */\n    uri?: string;\n    /**\n     * A blob of context, message-type dependent\n     */\n    context?: string;\n    /**\n     * A list of action buttons (if supported)\n     */\n    actions?: Array<MessageAction>;\n    /**\n     * The type of message. Useful for filtering. Can also help with choosing how to use the message. \n     */\n    message_type?: string;\n    /**\n     * Classifies the message in to different groups. Useful for filtering\n     */\n    message_class?: string;\n    /**\n     * An optional expiry time for the message. An expired message may be deleted at any point by the system. \n     */\n    expiry_date?: Date;\n    tag?: MessageTag;\n    /**\n     * The probability the message will be pushed to a user when an event occurs. A value of 1.0 means there is a 100% chance that the message will be pushed. A value of 0.0 means that there is a 0% chance. \n     */\n    push_probability?: number;\n}\n\nexport interface Message extends _Message {\n    _builtin_original?: _Message;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MessageImpl  implements _Message {\n    _builtin_original?: _Message = undefined;\n    public readonly id: string  | undefined ;\n    public title: string  | undefined ;\n    public sub_header: string  | undefined ;\n    public icon: string  | undefined ;\n    public image: string  | undefined ;\n    public text: string ;\n    public uri: string  | undefined ;\n    public context: string  | undefined ;\n    public actions: Array<MessageAction>  | undefined ;\n    public message_type: string  | undefined ;\n    public message_class: string  | undefined ;\n    public expiry_date: Date  | undefined ;\n    public tag: MessageTag  | undefined ;\n    public push_probability: number  | undefined ;\n    constructor(base: _Message) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'title') >= 0) {\n            this.title = base.title;\n        }\n        if (Object.keys(base).findIndex(key => key === 'sub_header') >= 0) {\n            this.sub_header = base.sub_header;\n        }\n        if (Object.keys(base).findIndex(key => key === 'icon') >= 0) {\n            this.icon = base.icon;\n        }\n        if (Object.keys(base).findIndex(key => key === 'image') >= 0) {\n            this.image = base.image;\n        }\n        if (Object.keys(base).findIndex(key => key === 'text') >= 0) {\n            this.text = base.text;\n        }\n        if (Object.keys(base).findIndex(key => key === 'uri') >= 0) {\n            this.uri = base.uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'context') >= 0) {\n            this.context = base.context;\n        }\n        if (Object.keys(base).findIndex(key => key === 'actions') >= 0) {\n            if (base.actions) {\n                this.actions = base.actions.map((original) => newMessageActionImpl(original));\n            } else {\n                this.actions = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'message_type') >= 0) {\n            this.message_type = base.message_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'message_class') >= 0) {\n            this.message_class = base.message_class;\n        }\n        if (Object.keys(base).findIndex(key => key === 'expiry_date') >= 0) {\n            this.expiry_date = base.expiry_date;\n        }\n        if (Object.keys(base).findIndex(key => key === 'tag') >= 0) {\n            this.tag = base.tag;\n        }\n        if (Object.keys(base).findIndex(key => key === 'push_probability') >= 0) {\n            this.push_probability = base.push_probability;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.actions !== undefined) {\n            for (const item of this.actions) {\n                if (item !== undefined && (item as MessageActionImpl)._remove_builtin_extensions !== undefined) {\n                    (item as MessageActionImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newMessageImpl(base: _Message): MessageImpl {\n    return new MessageImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Describes to whom to send a message.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MessageAddress { \n    /**\n     * Unique identifier\n     */\n    user_id: string;\n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n    /**\n     * Whether to send directly to the user, or to its members. By default, if not present, this is false, meaning the message will be sent to members of this user if the user is a group. \n     */\n    direct?: boolean;\n}\n\nexport interface MessageAddress extends _MessageAddress {\n    _builtin_original?: _MessageAddress;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MessageAddressImpl  implements _MessageAddress {\n    _builtin_original?: _MessageAddress = undefined;\n    public user_id: string ;\n    public org_id: string  | undefined ;\n    public direct: boolean  | undefined ;\n    constructor(base: _MessageAddress) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'direct') >= 0) {\n            this.direct = base.direct;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMessageAddressImpl(base: _MessageAddress): MessageAddressImpl {\n    return new MessageAddressImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The metadata (e.g. non-writable) part of the object\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MessageEndpointMetadata { \n    /**\n     * Unique identifier\n     */\n    readonly message_endpoint_id?: string;\n    /**\n     * Unique identifier\n     */\n    readonly user_id?: string;\n    /**\n     * Creation time\n     */\n    readonly created?: Date;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n}\n\nexport interface MessageEndpointMetadata extends _MessageEndpointMetadata {\n    _builtin_original?: _MessageEndpointMetadata;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MessageEndpointMetadataImpl  implements _MessageEndpointMetadata {\n    _builtin_original?: _MessageEndpointMetadata = undefined;\n    public readonly message_endpoint_id: string  | undefined ;\n    public readonly user_id: string  | undefined ;\n    public readonly created: Date  | undefined ;\n    public readonly updated: Date  | undefined ;\n    constructor(base: _MessageEndpointMetadata) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'message_endpoint_id') >= 0) {\n            this.message_endpoint_id = base.message_endpoint_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'created') >= 0) {\n            this.created = base.created;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMessageEndpointMetadataImpl(base: _MessageEndpointMetadata): MessageEndpointMetadataImpl {\n    return new MessageEndpointMetadataImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MessageEndpointType, MessageEndpointType, MessageEndpointTypeImpl, newMessageEndpointTypeImpl } from './messageEndpointType';\n\n\n/**\n * The configurable part of a message endpoint\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MessageEndpointSpec { \n    endpoint_type?: MessageEndpointType;\n    /**\n     * User-supplied name (e.g. My-Yubikey, don\\'s laptop)\n     */\n    nickname?: string;\n    /**\n     * Type-specific address info (e.g. phone num, push-context json, ...)\n     */\n    address?: string;\n    /**\n     * The status of the message endpoint, `true` when the endpoint is enabled, and `false` when the endpoint is disabled.\n     */\n    enabled?: boolean;\n}\n\nexport interface MessageEndpointSpec extends _MessageEndpointSpec {\n    _builtin_original?: _MessageEndpointSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MessageEndpointSpecImpl  implements _MessageEndpointSpec {\n    _builtin_original?: _MessageEndpointSpec = undefined;\n    public endpoint_type: MessageEndpointType  | undefined ;\n    public nickname: string  | undefined ;\n    public address: string  | undefined ;\n    public enabled: boolean  | undefined ;\n    constructor(base: _MessageEndpointSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'endpoint_type') >= 0) {\n            this.endpoint_type = base.endpoint_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'nickname') >= 0) {\n            this.nickname = base.nickname;\n        }\n        if (Object.keys(base).findIndex(key => key === 'address') >= 0) {\n            this.address = base.address;\n        }\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMessageEndpointSpecImpl(base: _MessageEndpointSpec): MessageEndpointSpecImpl {\n    return new MessageEndpointSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The output medium to use. Not all medium are equally able to use all fields. All support `text`. In the event of medium which don\\'t support anything other than `text`, the `uri` field is appended with `context` added as a parameter. Examples are web_push, sms, ... The inbox type queues the message in a per-user inbox. \n */\nexport type _MessageEndpointType = 'web_push' | 'sms' | 'inbox';\nexport type MessageEndpointType = _MessageEndpointType\n\nexport type MessageEndpointTypeImpl = MessageEndpointType;\nexport const MessageEndpointType = {\n    web_push: 'web_push' as MessageEndpointType,\n    sms: 'sms' as MessageEndpointType,\n    inbox: 'inbox' as MessageEndpointType\n};\n\nexport function newMessageEndpointTypeImpl(base: _MessageEndpointType): MessageEndpointTypeImpl {\n    return base;\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The configuration of the web_push endpoint type. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MessageEndpointTypeWebPush { \n    /**\n     * VAPID public key for web_push\n     */\n    public_key?: string;\n}\n\nexport interface MessageEndpointTypeWebPush extends _MessageEndpointTypeWebPush {\n    _builtin_original?: _MessageEndpointTypeWebPush;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MessageEndpointTypeWebPushImpl  implements _MessageEndpointTypeWebPush {\n    _builtin_original?: _MessageEndpointTypeWebPush = undefined;\n    public public_key: string  | undefined ;\n    constructor(base: _MessageEndpointTypeWebPush) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'public_key') >= 0) {\n            this.public_key = base.public_key;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMessageEndpointTypeWebPushImpl(base: _MessageEndpointTypeWebPush): MessageEndpointTypeWebPushImpl {\n    return new MessageEndpointTypeWebPushImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MessageEndpointTypeWebPush, MessageEndpointTypeWebPush, MessageEndpointTypeWebPushImpl, newMessageEndpointTypeWebPushImpl } from './messageEndpointTypeWebPush';\n\n\n/**\n * A list of the registered message endpoint types, and their config.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MessageEndpointsConfig { \n    /**\n     * The configuration of the sms endpoint type. \n     */\n    sms?: object;\n    web_push?: MessageEndpointTypeWebPush;\n}\n\nexport interface MessageEndpointsConfig extends _MessageEndpointsConfig {\n    _builtin_original?: _MessageEndpointsConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MessageEndpointsConfigImpl  implements _MessageEndpointsConfig {\n    _builtin_original?: _MessageEndpointsConfig = undefined;\n    public sms: object  | undefined ;\n    public web_push: MessageEndpointTypeWebPush  | undefined ;\n    constructor(base: _MessageEndpointsConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'sms') >= 0) {\n            this.sms = base.sms;\n        }\n        if (Object.keys(base).findIndex(key => key === 'web_push') >= 0) {\n            this.web_push = base.web_push;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMessageEndpointsConfigImpl(base: _MessageEndpointsConfig): MessageEndpointsConfigImpl {\n    return new MessageEndpointsConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Message, Message, MessageImpl, newMessageImpl } from './message';\nimport { _MessageAddress, MessageAddress, MessageAddressImpl, newMessageAddressImpl } from './messageAddress';\nimport { _MessageEndpointType, MessageEndpointType, MessageEndpointTypeImpl, newMessageEndpointTypeImpl } from './messageEndpointType';\n\n\n/**\n * A message to send and information about how to route it\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MessageSendItem { \n    message: Message;\n    /**\n     * The message will be sent to each of these addresses. \n     */\n    addresses: Array<MessageAddress>;\n    /**\n     * Whether or not the message should be fire and forget, or whether it should be persisted for some time. \n     */\n    ephemeral: boolean;\n    /**\n     * The types of endpoint to send to. If not specified, defaults to [inbox, webpush] \n     */\n    endpoint_types?: Array<MessageEndpointType>;\n}\n\nexport interface MessageSendItem extends _MessageSendItem {\n    _builtin_original?: _MessageSendItem;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MessageSendItemImpl  implements _MessageSendItem {\n    _builtin_original?: _MessageSendItem = undefined;\n    public message: Message ;\n    public addresses: Array<MessageAddress> ;\n    public ephemeral: boolean ;\n    public endpoint_types: Array<MessageEndpointType>  | undefined ;\n    constructor(base: _MessageSendItem) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'message') >= 0) {\n            this.message = base.message;\n        }\n        if (Object.keys(base).findIndex(key => key === 'addresses') >= 0) {\n            if (base.addresses) {\n                this.addresses = base.addresses.map((original) => newMessageAddressImpl(original));\n            } else {\n                this.addresses = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'ephemeral') >= 0) {\n            this.ephemeral = base.ephemeral;\n        }\n        if (Object.keys(base).findIndex(key => key === 'endpoint_types') >= 0) {\n            if (base.endpoint_types) {\n                this.endpoint_types = base.endpoint_types.map((original) => newMessageEndpointTypeImpl(original));\n            } else {\n                this.endpoint_types = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.addresses !== undefined) {\n            for (const item of this.addresses) {\n                if (item !== undefined && (item as MessageAddressImpl)._remove_builtin_extensions !== undefined) {\n                    (item as MessageAddressImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newMessageSendItemImpl(base: _MessageSendItem): MessageSendItemImpl {\n    return new MessageSendItemImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MessageSendItem, MessageSendItem, MessageSendItemImpl, newMessageSendItemImpl } from './messageSendItem';\n\n\n/**\n * Requests that the system send one or more messages, using the messages\\' properties and the provided addresses in conjunction with the users\\' configuration to determine how it is routed. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MessageSendRequest { \n    /**\n     * The messages to send\n     */\n    messages: Array<MessageSendItem>;\n}\n\nexport interface MessageSendRequest extends _MessageSendRequest {\n    _builtin_original?: _MessageSendRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MessageSendRequestImpl  implements _MessageSendRequest {\n    _builtin_original?: _MessageSendRequest = undefined;\n    public messages: Array<MessageSendItem> ;\n    constructor(base: _MessageSendRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'messages') >= 0) {\n            if (base.messages) {\n                this.messages = base.messages.map((original) => newMessageSendItemImpl(original));\n            } else {\n                this.messages = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.messages !== undefined) {\n            for (const item of this.messages) {\n                if (item !== undefined && (item as MessageSendItemImpl)._remove_builtin_extensions !== undefined) {\n                    (item as MessageSendItemImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newMessageSendRequestImpl(base: _MessageSendRequest): MessageSendRequestImpl {\n    return new MessageSendRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Message, Message, MessageImpl, newMessageImpl } from './message';\n\n\n/**\n * Contains the sent message with its guid filled in, as well as any metadata about how the operation proceeded. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MessageSendResponseItem { \n    message: Message;\n    /**\n     * The number of endpoints to which the message was sent\n     */\n    count: number;\n}\n\nexport interface MessageSendResponseItem extends _MessageSendResponseItem {\n    _builtin_original?: _MessageSendResponseItem;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MessageSendResponseItemImpl  implements _MessageSendResponseItem {\n    _builtin_original?: _MessageSendResponseItem = undefined;\n    public message: Message ;\n    public count: number ;\n    constructor(base: _MessageSendResponseItem) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'message') >= 0) {\n            this.message = base.message;\n        }\n        if (Object.keys(base).findIndex(key => key === 'count') >= 0) {\n            this.count = base.count;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMessageSendResponseItemImpl(base: _MessageSendResponseItem): MessageSendResponseItemImpl {\n    return new MessageSendResponseItemImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MessageSendResponseItem, MessageSendResponseItem, MessageSendResponseItemImpl, newMessageSendResponseItemImpl } from './messageSendResponseItem';\n\n\n/**\n * Provides information about the messages which were sent \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MessageSendResponse { \n    /**\n     * The messages which were sent\n     */\n    sent_messages: Array<MessageSendResponseItem>;\n}\n\nexport interface MessageSendResponse extends _MessageSendResponse {\n    _builtin_original?: _MessageSendResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MessageSendResponseImpl  implements _MessageSendResponse {\n    _builtin_original?: _MessageSendResponse = undefined;\n    public sent_messages: Array<MessageSendResponseItem> ;\n    constructor(base: _MessageSendResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'sent_messages') >= 0) {\n            if (base.sent_messages) {\n                this.sent_messages = base.sent_messages.map((original) => newMessageSendResponseItemImpl(original));\n            } else {\n                this.sent_messages = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.sent_messages !== undefined) {\n            for (const item of this.sent_messages) {\n                if (item !== undefined && (item as MessageSendResponseItemImpl)._remove_builtin_extensions !== undefined) {\n                    (item as MessageSendResponseItemImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newMessageSendResponseImpl(base: _MessageSendResponse): MessageSendResponseImpl {\n    return new MessageSendResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A message tag, which helps describe the message record. Useful for filtering/searching\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MessageTag { \n    /**\n     * A name for message tag \n     */\n    tag_name: string;\n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n}\n\nexport interface MessageTag extends _MessageTag {\n    _builtin_original?: _MessageTag;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MessageTagImpl  implements _MessageTag {\n    _builtin_original?: _MessageTag = undefined;\n    public tag_name: string ;\n    public org_id: string  | undefined ;\n    constructor(base: _MessageTag) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'tag_name') >= 0) {\n            this.tag_name = base.tag_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMessageTagImpl(base: _MessageTag): MessageTagImpl {\n    return new MessageTagImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MessageTag, MessageTag, MessageTagImpl, newMessageTagImpl } from './messageTag';\n\n\n/**\n * A MessagesBulkDeleteRequest allows a client to delete a number of messages and inbox items associated to it at once. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MessagesBulkDeleteRequest { \n    message_tag?: MessageTag;\n    /**\n     * The maximum number of messages to delete. \n     */\n    limit?: number;\n    /**\n     * If true, delete only expired messages. This is useful to clean up messages which are no longer relevant. \n     */\n    delete_expired?: boolean;\n}\n\nexport interface MessagesBulkDeleteRequest extends _MessagesBulkDeleteRequest {\n    _builtin_original?: _MessagesBulkDeleteRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MessagesBulkDeleteRequestImpl  implements _MessagesBulkDeleteRequest {\n    _builtin_original?: _MessagesBulkDeleteRequest = undefined;\n    public message_tag: MessageTag  | undefined ;\n    public limit: number  | undefined ;\n    public delete_expired: boolean  | undefined ;\n    constructor(base: _MessagesBulkDeleteRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'message_tag') >= 0) {\n            this.message_tag = base.message_tag;\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n        if (Object.keys(base).findIndex(key => key === 'delete_expired') >= 0) {\n            this.delete_expired = base.delete_expired;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMessagesBulkDeleteRequestImpl(base: _MessagesBulkDeleteRequest): MessagesBulkDeleteRequestImpl {\n    return new MessagesBulkDeleteRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The response body of a bulk message deletion\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MessagesBulkDeleteResponse { \n    /**\n     * The number of messages that were deleted\n     */\n    number_of_messages_deleted?: number;\n}\n\nexport interface MessagesBulkDeleteResponse extends _MessagesBulkDeleteResponse {\n    _builtin_original?: _MessagesBulkDeleteResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MessagesBulkDeleteResponseImpl  implements _MessagesBulkDeleteResponse {\n    _builtin_original?: _MessagesBulkDeleteResponse = undefined;\n    public number_of_messages_deleted: number  | undefined ;\n    constructor(base: _MessagesBulkDeleteResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'number_of_messages_deleted') >= 0) {\n            this.number_of_messages_deleted = base.number_of_messages_deleted;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMessagesBulkDeleteResponseImpl(base: _MessagesBulkDeleteResponse): MessagesBulkDeleteResponseImpl {\n    return new MessagesBulkDeleteResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithIdAllOf, MetadataWithIdAllOf, MetadataWithIdAllOfImpl, newMetadataWithIdAllOfImpl } from './metadataWithIdAllOf';\nimport { _CommonMetadata, CommonMetadata, CommonMetadataImpl, newCommonMetadataImpl } from './commonMetadata';\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _MetadataWithId { \n    /**\n     * Creation time\n     */\n    readonly created?: Date;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n    /**\n     * Unique identifier\n     */\n    readonly id?: string;\n}\n\nexport interface MetadataWithId extends _MetadataWithId {\n    _builtin_original?: _MetadataWithId;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MetadataWithIdImpl  implements _MetadataWithId {\n    _builtin_original?: _MetadataWithId = undefined;\n    public readonly created: Date  | undefined ;\n    public readonly updated: Date  | undefined ;\n    public readonly id: string  | undefined ;\n    constructor(base: _MetadataWithId) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'created') >= 0) {\n            this.created = base.created;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMetadataWithIdImpl(base: _MetadataWithId): MetadataWithIdImpl {\n    return new MetadataWithIdImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _MetadataWithIdAllOf { \n    /**\n     * Unique identifier\n     */\n    readonly id?: string;\n}\n\nexport interface MetadataWithIdAllOf extends _MetadataWithIdAllOf {\n    _builtin_original?: _MetadataWithIdAllOf;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MetadataWithIdAllOfImpl  implements _MetadataWithIdAllOf {\n    _builtin_original?: _MetadataWithIdAllOf = undefined;\n    public readonly id: string  | undefined ;\n    constructor(base: _MetadataWithIdAllOf) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMetadataWithIdAllOfImpl(base: _MetadataWithIdAllOf): MetadataWithIdAllOfImpl {\n    return new MetadataWithIdAllOfImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A unique identifier for an object in the system\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _MetadataWithOnlyId { \n    /**\n     * Unique identifier\n     */\n    id?: string;\n}\n\nexport interface MetadataWithOnlyId extends _MetadataWithOnlyId {\n    _builtin_original?: _MetadataWithOnlyId;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class MetadataWithOnlyIdImpl  implements _MetadataWithOnlyId {\n    _builtin_original?: _MetadataWithOnlyId = undefined;\n    public id: string  | undefined ;\n    constructor(base: _MetadataWithOnlyId) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newMetadataWithOnlyIdImpl(base: _MetadataWithOnlyId): MetadataWithOnlyIdImpl {\n    return new MetadataWithOnlyIdImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ObjectOperStatus, ObjectOperStatus, ObjectOperStatusImpl, newObjectOperStatusImpl } from './objectOperStatus';\nimport { _FileVisibility, FileVisibility, FileVisibilityImpl, newFileVisibilityImpl } from './fileVisibility';\nimport { _StorageRegion, StorageRegion, StorageRegionImpl, newStorageRegionImpl } from './storageRegion';\n\n\n/**\n * File properties\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ModelFile { \n    /**\n     * Unique identifier\n     */\n    readonly id?: string;\n    /**\n     * Name of file\n     */\n    name?: string;\n    /**\n     * A file tag\n     */\n    tag?: string;\n    /**\n     * A file label\n     */\n    label?: string;\n    /**\n     * Size in bytes of the file\n     */\n    readonly size?: number;\n    visibility?: FileVisibility;\n    /**\n     * The location of the file on the internet. If present, this file can be downloaded by requesting this URI. If the file is publically visible, then no credentials need be provided. \n     */\n    readonly public_url?: string;\n    region?: StorageRegion;\n    /**\n     * Locking prevents the deletion or modification of the file\n     */\n    lock?: boolean;\n    /**\n     * storage path\n     */\n    readonly storage_path?: string;\n    /**\n     * MD5 Hash of file in base64\n     */\n    readonly md5_hash?: string;\n    /**\n     * Time object was last accessed\n     */\n    readonly last_accessed?: Date;\n    /**\n     * Creation time\n     */\n    readonly created?: Date;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n    operstatus?: ObjectOperStatus;\n    /**\n     * Whether the file has ever been associated. This will be set to true if something has ever associated itself with the file. Even if a file no longer has associations, if it once did, this value will be true. This is primarily useful for distinguishing files that shouldn\\'t be garbage collected from ones which should not be. \n     */\n    readonly has_been_associated?: boolean;\n}\n\nexport interface ModelFile extends _ModelFile {\n    _builtin_original?: _ModelFile;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ModelFileImpl  implements _ModelFile {\n    _builtin_original?: _ModelFile = undefined;\n    public readonly id: string  | undefined ;\n    public name: string  | undefined ;\n    public tag: string  | undefined ;\n    public label: string  | undefined ;\n    public readonly size: number  | undefined ;\n    public visibility: FileVisibility  | undefined ;\n    public readonly public_url: string  | undefined ;\n    public region: StorageRegion  | undefined ;\n    public lock: boolean  | undefined ;\n    public readonly storage_path: string  | undefined ;\n    public readonly md5_hash: string  | undefined ;\n    public readonly last_accessed: Date  | undefined ;\n    public readonly created: Date  | undefined ;\n    public readonly updated: Date  | undefined ;\n    public operstatus: ObjectOperStatus  | undefined ;\n    public readonly has_been_associated: boolean  | undefined ;\n    constructor(base: _ModelFile) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'tag') >= 0) {\n            this.tag = base.tag;\n        }\n        if (Object.keys(base).findIndex(key => key === 'label') >= 0) {\n            this.label = base.label;\n        }\n        if (Object.keys(base).findIndex(key => key === 'size') >= 0) {\n            this.size = base.size;\n        }\n        if (Object.keys(base).findIndex(key => key === 'visibility') >= 0) {\n            this.visibility = base.visibility;\n        }\n        if (Object.keys(base).findIndex(key => key === 'public_url') >= 0) {\n            this.public_url = base.public_url;\n        }\n        if (Object.keys(base).findIndex(key => key === 'region') >= 0) {\n            this.region = base.region;\n        }\n        if (Object.keys(base).findIndex(key => key === 'lock') >= 0) {\n            this.lock = base.lock;\n        }\n        if (Object.keys(base).findIndex(key => key === 'storage_path') >= 0) {\n            this.storage_path = base.storage_path;\n        }\n        if (Object.keys(base).findIndex(key => key === 'md5_hash') >= 0) {\n            this.md5_hash = base.md5_hash;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_accessed') >= 0) {\n            this.last_accessed = base.last_accessed;\n        }\n        if (Object.keys(base).findIndex(key => key === 'created') >= 0) {\n            this.created = base.created;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n        if (Object.keys(base).findIndex(key => key === 'operstatus') >= 0) {\n            this.operstatus = base.operstatus;\n        }\n        if (Object.keys(base).findIndex(key => key === 'has_been_associated') >= 0) {\n            this.has_been_associated = base.has_been_associated;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newModelFileImpl(base: _ModelFile): ModelFileImpl {\n    return new ModelFileImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _InternalNetworkBind, InternalNetworkBind, InternalNetworkBindImpl, newInternalNetworkBindImpl } from './internalNetworkBind';\n\n\n/**\n * Configures how a connector provides access to the NTP internal network. The connector will listen on UDP, forwarding the NTP requests to an NTP server in the Agilicus cloud. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _NTPInternalNetworkRouting { \n    bind?: InternalNetworkBind;\n}\n\nexport interface NTPInternalNetworkRouting extends _NTPInternalNetworkRouting {\n    _builtin_original?: _NTPInternalNetworkRouting;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class NTPInternalNetworkRoutingImpl  implements _NTPInternalNetworkRouting {\n    _builtin_original?: _NTPInternalNetworkRouting = undefined;\n    public bind: InternalNetworkBind  | undefined ;\n    constructor(base: _NTPInternalNetworkRouting) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'bind') >= 0) {\n            this.bind = base.bind;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newNTPInternalNetworkRoutingImpl(base: _NTPInternalNetworkRouting): NTPInternalNetworkRoutingImpl {\n    return new NTPInternalNetworkRoutingImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Detailed network statistics \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _NetworkDetailedStats { \n    /**\n     * The total number of connections currently established or establishing. This value is a guage, meaning it is not monotonic. \n     */\n    connections_current: number;\n    /**\n     * The number of times a connection attempt failed because it took too long to establish\n     */\n    connections_timedout: number;\n    /**\n     * The number of times a connection attempt failed because a host lookup failed\n     */\n    connections_host_not_found: number;\n    /**\n     * The number of times a connection attempt failed because the target host reset the connection \n     */\n    connections_reset: number;\n    /**\n     * The number of times a connection attempt failed because TLS validation did not succeed. This is typically because either the server certificate did not match the expected one, or because we did not trust it. Try to fix this problem by ensuring that the certitifate is valid, matches the hostname the client connects to, and that it is issued by a certificate authority trusted by the client. Alternatively, if this is not possible, disable certificate validation. \n     */\n    connections_tls_validation_failed: number;\n    /**\n     * The number of times a connection attempt failed for reasons other than the explicitly enumerated ones. \n     */\n    connections_other_failure: number;\n    /**\n     * The number of times a connection attempt failed because the upstream returned an invalid TLS response. Typically this happens because the upstream is not configured to use TLS, but it could be due to a bug in the upstream server, or some other incompatibility (e.g. an unsupported version whose versioning mechanism is unknown). Check that the server is configured to serve TLS, or connect to it using plaintext. \n     */\n    connections_tls_protocol_failure?: number;\n    /**\n     * The number of times a connection attempt failed because the upstream server replied that it did not support one of the versions supported by the client. Typically this is because the server is running a fairly old version of software. See if there is a new version of the software available, or ensure that it provides a maximum TLS version of at least 1.2. \n     */\n    connections_tls_unsupported_version?: number;\n    /**\n     * The number of times a connection attempt failed because the upstream server replied that it was unable to accept the connection request. This can be for various reasons such as an incompatible set of cipher suites. Check that the server supports a modern set of cipher suites, or look at its logs to see if it indicates the reason for the failure. \n     */\n    connections_tls_remote_error?: number;\n    /**\n     * The number of times a connection attempt failed because the TLS negotiation failed for reasons other than the explicitly enumerated ones. \n     */\n    connections_tls_other_error?: number;\n    /**\n     * The number of times we failed to send a datagram to a network because it was too large (e.g. above MTU) \n     */\n    datagrams_too_large_sent?: number;\n    /**\n     * The number of times we failed to receive a datagram to a network because it was too large (e.g. above MTU) \n     */\n    datagrams_too_large_received?: number;\n}\n\nexport interface NetworkDetailedStats extends _NetworkDetailedStats {\n    _builtin_original?: _NetworkDetailedStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class NetworkDetailedStatsImpl  implements _NetworkDetailedStats {\n    _builtin_original?: _NetworkDetailedStats = undefined;\n    public connections_current: number ;\n    public connections_timedout: number ;\n    public connections_host_not_found: number ;\n    public connections_reset: number ;\n    public connections_tls_validation_failed: number ;\n    public connections_other_failure: number ;\n    public connections_tls_protocol_failure: number  | undefined ;\n    public connections_tls_unsupported_version: number  | undefined ;\n    public connections_tls_remote_error: number  | undefined ;\n    public connections_tls_other_error: number  | undefined ;\n    public datagrams_too_large_sent: number  | undefined ;\n    public datagrams_too_large_received: number  | undefined ;\n    constructor(base: _NetworkDetailedStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'connections_current') >= 0) {\n            this.connections_current = base.connections_current;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connections_timedout') >= 0) {\n            this.connections_timedout = base.connections_timedout;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connections_host_not_found') >= 0) {\n            this.connections_host_not_found = base.connections_host_not_found;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connections_reset') >= 0) {\n            this.connections_reset = base.connections_reset;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connections_tls_validation_failed') >= 0) {\n            this.connections_tls_validation_failed = base.connections_tls_validation_failed;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connections_other_failure') >= 0) {\n            this.connections_other_failure = base.connections_other_failure;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connections_tls_protocol_failure') >= 0) {\n            this.connections_tls_protocol_failure = base.connections_tls_protocol_failure;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connections_tls_unsupported_version') >= 0) {\n            this.connections_tls_unsupported_version = base.connections_tls_unsupported_version;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connections_tls_remote_error') >= 0) {\n            this.connections_tls_remote_error = base.connections_tls_remote_error;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connections_tls_other_error') >= 0) {\n            this.connections_tls_other_error = base.connections_tls_other_error;\n        }\n        if (Object.keys(base).findIndex(key => key === 'datagrams_too_large_sent') >= 0) {\n            this.datagrams_too_large_sent = base.datagrams_too_large_sent;\n        }\n        if (Object.keys(base).findIndex(key => key === 'datagrams_too_large_received') >= 0) {\n            this.datagrams_too_large_received = base.datagrams_too_large_received;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newNetworkDetailedStatsImpl(base: _NetworkDetailedStats): NetworkDetailedStatsImpl {\n    return new NetworkDetailedStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LearningModeSpec, LearningModeSpec, LearningModeSpecImpl, newLearningModeSpecImpl } from './learningModeSpec';\n\n\n/**\n * A definition of transport-layer port(s) on which to access a service.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _NetworkPortRange { \n    /**\n     * The transport-layer protocol over which to communicate with the service. \n     */\n    protocol: NetworkPortRange.ProtocolEnum;\n    /**\n     * The transport-layer port on which to access the service.  This can defined as,     - a single port within the range 0-65535 (max port)    - a range of ports, eg. 5000-5005 \n     */\n    port: string;\n    alternate_mode_setting?: LearningModeSpec;\n}\n\nexport interface NetworkPortRange extends _NetworkPortRange {\n    _builtin_original?: _NetworkPortRange;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class NetworkPortRangeImpl  implements _NetworkPortRange {\n    _builtin_original?: _NetworkPortRange = undefined;\n    public protocol: NetworkPortRange.ProtocolEnum ;\n    public port: string ;\n    public alternate_mode_setting: LearningModeSpec  | undefined ;\n    constructor(base: _NetworkPortRange) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'protocol') >= 0) {\n            this.protocol = base.protocol;\n        }\n        if (Object.keys(base).findIndex(key => key === 'port') >= 0) {\n            this.port = base.port;\n        }\n        if (Object.keys(base).findIndex(key => key === 'alternate_mode_setting') >= 0) {\n            this.alternate_mode_setting = base.alternate_mode_setting;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace NetworkPortRange {\n    export type ProtocolEnum = 'tcp' | 'udp';\n    export const ProtocolEnum = {\n        tcp: 'tcp' as ProtocolEnum,\n        udp: 'udp' as ProtocolEnum\n    };\n}\n\n\nexport function newNetworkPortRangeImpl(base: _NetworkPortRange): NetworkPortRangeImpl {\n    return new NetworkPortRangeImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * This condition is true if the request satifies the specific network protocol configured below (protocol) that the policy is operating on. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _NetworkProtocolCondition { \n    /**\n     * The discriminator for the condition\n     */\n    condition_type: string;\n    /**\n     * The specific protocol. \n     */\n    protocol: string;\n}\n\nexport interface NetworkProtocolCondition extends _NetworkProtocolCondition {\n    _builtin_original?: _NetworkProtocolCondition;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class NetworkProtocolConditionImpl  implements _NetworkProtocolCondition {\n    _builtin_original?: _NetworkProtocolCondition = undefined;\n    public condition_type: string ;\n    public protocol: string ;\n    constructor(base: _NetworkProtocolCondition) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'condition_type') >= 0) {\n            this.condition_type = base.condition_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'protocol') >= 0) {\n            this.protocol = base.protocol;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newNetworkProtocolConditionImpl(base: _NetworkProtocolCondition): NetworkProtocolConditionImpl {\n    return new NetworkProtocolConditionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _NetworkPortRange, NetworkPortRange, NetworkPortRangeImpl, newNetworkPortRangeImpl } from './networkPortRange';\n\n\n/**\n * Configuration related to a network service. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _NetworkServiceConfig { \n    /**\n     * The port(s) and protocol(s) associated with the network service. \n     */\n    ports?: Array<NetworkPortRange>;\n    /**\n     * A NetworkServiceConfig can provide configuration related to which port the traffic is initially received on, before being tunnelled, and finally destined to the final upstream port (ie. the port config in this structure). Without an override, the source_port being listened on would be identical to the destination port (ie. port). The source_port override allows the listening source port to be changed, in case there is a collision. This override can be configured as a port or range (source_port_override), or the system can dynamically allocate a port if dynamic_source_port_override is specified. \n     */\n    source_port_override?: Array<NetworkPortRange>;\n    /**\n     * Whether or not we want the system to dynamically allocate the listening source port, in case there is a collision. \n     */\n    dynamic_source_port_override?: boolean;\n    /**\n     * If set, override the (local) IP the traffic is initially received on, before being tunnelled. Without an override, the source address being listened on would be localhost, or a dynamic IP chosen to avoid collision. \n     */\n    source_address_override?: string;\n}\n\nexport interface NetworkServiceConfig extends _NetworkServiceConfig {\n    _builtin_original?: _NetworkServiceConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class NetworkServiceConfigImpl  implements _NetworkServiceConfig {\n    _builtin_original?: _NetworkServiceConfig = undefined;\n    public ports: Array<NetworkPortRange>  | undefined ;\n    public source_port_override: Array<NetworkPortRange>  | undefined ;\n    public dynamic_source_port_override: boolean  | undefined ;\n    public source_address_override: string  | undefined ;\n    constructor(base: _NetworkServiceConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'ports') >= 0) {\n            if (base.ports) {\n                this.ports = base.ports.map((original) => newNetworkPortRangeImpl(original));\n            } else {\n                this.ports = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'source_port_override') >= 0) {\n            if (base.source_port_override) {\n                this.source_port_override = base.source_port_override.map((original) => newNetworkPortRangeImpl(original));\n            } else {\n                this.source_port_override = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'dynamic_source_port_override') >= 0) {\n            this.dynamic_source_port_override = base.dynamic_source_port_override;\n        }\n        if (Object.keys(base).findIndex(key => key === 'source_address_override') >= 0) {\n            this.source_address_override = base.source_address_override;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.ports !== undefined) {\n            for (const item of this.ports) {\n                if (item !== undefined && (item as NetworkPortRangeImpl)._remove_builtin_extensions !== undefined) {\n                    (item as NetworkPortRangeImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.source_port_override !== undefined) {\n            for (const item of this.source_port_override) {\n                if (item !== undefined && (item as NetworkPortRangeImpl)._remove_builtin_extensions !== undefined) {\n                    (item as NetworkPortRangeImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newNetworkServiceConfigImpl(base: _NetworkServiceConfig): NetworkServiceConfigImpl {\n    return new NetworkServiceConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Stats summarising the operations performed by an application service. The meaning of the stats depends on the type of application service:  - a share: share requests  - otherwise: connections (e.g. tcp), \\'connections\\' via tunnel (e.g. udp) \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _NetworkSummaryStats { \n    /**\n     * The number of bytes received from the server\n     */\n    bytes_received: number;\n    /**\n     * The number of bytes, sent to the server\n     */\n    bytes_sent: number;\n    /**\n     * The total number of connection established, finished or failed\n     */\n    connections_total: number;\n    /**\n     * The total number of connections which successfully established. This includes current connections \n     */\n    connections_successful: number;\n    /**\n     * The total number of times a connection attempt failed. This aggregates the detailed connection failure conditions \n     */\n    connections_failed: number;\n    /**\n     * The number of datagrams received from the server\n     */\n    datagrams_received?: number;\n    /**\n     * The number of datagrams sent to the server\n     */\n    datagrams_sent?: number;\n    /**\n     * The number of datagrams dropped (e.g. due to mtu).\n     */\n    datagrams_dropped?: number;\n}\n\nexport interface NetworkSummaryStats extends _NetworkSummaryStats {\n    _builtin_original?: _NetworkSummaryStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class NetworkSummaryStatsImpl  implements _NetworkSummaryStats {\n    _builtin_original?: _NetworkSummaryStats = undefined;\n    public bytes_received: number ;\n    public bytes_sent: number ;\n    public connections_total: number ;\n    public connections_successful: number ;\n    public connections_failed: number ;\n    public datagrams_received: number  | undefined ;\n    public datagrams_sent: number  | undefined ;\n    public datagrams_dropped: number  | undefined ;\n    constructor(base: _NetworkSummaryStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'bytes_received') >= 0) {\n            this.bytes_received = base.bytes_received;\n        }\n        if (Object.keys(base).findIndex(key => key === 'bytes_sent') >= 0) {\n            this.bytes_sent = base.bytes_sent;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connections_total') >= 0) {\n            this.connections_total = base.connections_total;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connections_successful') >= 0) {\n            this.connections_successful = base.connections_successful;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connections_failed') >= 0) {\n            this.connections_failed = base.connections_failed;\n        }\n        if (Object.keys(base).findIndex(key => key === 'datagrams_received') >= 0) {\n            this.datagrams_received = base.datagrams_received;\n        }\n        if (Object.keys(base).findIndex(key => key === 'datagrams_sent') >= 0) {\n            this.datagrams_sent = base.datagrams_sent;\n        }\n        if (Object.keys(base).findIndex(key => key === 'datagrams_dropped') >= 0) {\n            this.datagrams_dropped = base.datagrams_dropped;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newNetworkSummaryStatsImpl(base: _NetworkSummaryStats): NetworkSummaryStatsImpl {\n    return new NetworkSummaryStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An OIDCProxyScope describes a OIDC scope that will be used when authenticating with the configured OIDC provider. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCProxyScope { \n    /**\n     * Each application role represents a scope in the form of urn:agilicus:app:X:Y (X is the app name and Y is the role). The scope can be optional by adding a question mark after the role (e.g. urn:agilicus:app:X:Y?). If the scope is required, users without equivalent roles will be denied access. Otherwise, the user will only be granted the access permission if they have the role. \n     */\n    name: string;\n}\n\nexport interface OIDCProxyScope extends _OIDCProxyScope {\n    _builtin_original?: _OIDCProxyScope;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCProxyScopeImpl  implements _OIDCProxyScope {\n    _builtin_original?: _OIDCProxyScope = undefined;\n    public name: string ;\n    constructor(base: _OIDCProxyScope) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOIDCProxyScopeImpl(base: _OIDCProxyScope): OIDCProxyScopeImpl {\n    return new OIDCProxyScopeImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _OIDCProxyScope, OIDCProxyScope, OIDCProxyScopeImpl, newOIDCProxyScopeImpl } from './oIDCProxyScope';\nimport { _OIDCAuthPathConfig, OIDCAuthPathConfig, OIDCAuthPathConfigImpl, newOIDCAuthPathConfigImpl } from './oIDCAuthPathConfig';\n\n\n/**\n * The OIDC configuration for authentication with OIDC connector.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCAuthConfig { \n    /**\n     * Whether the authentication is enabled. If true, users will be forced to log in before accessing any of its assets. If false, no authentication will be performed. \n     */\n    auth_enabled: boolean;\n    /**\n     * The OIDC client identifier to use when logging in with this application.\n     */\n    client_id: string;\n    /**\n     * The url of the OpenID Connect issuer.\n     */\n    issuer: string;\n    /**\n     * The relative http path to the logout page.\n     */\n    logout_url?: string;\n    /**\n     * A list of scopes to be requested on behalf of the user of the application.\n     */\n    scopes?: Array<OIDCProxyScope>;\n    path_config?: OIDCAuthPathConfig;\n    /**\n     * The path to which the user will be redirected on successful signin.  If this is not set, the default is \\'/\\'. \n     */\n    redirect_after_signin_path?: string;\n    /**\n     * The subpath to redirect if application is set in a subdirectory (not root). \n     */\n    redirect_subpath?: string;\n}\n\nexport interface OIDCAuthConfig extends _OIDCAuthConfig {\n    _builtin_original?: _OIDCAuthConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCAuthConfigImpl  implements _OIDCAuthConfig {\n    _builtin_original?: _OIDCAuthConfig = undefined;\n    public auth_enabled: boolean ;\n    public client_id: string ;\n    public issuer: string ;\n    public logout_url: string  | undefined ;\n    public scopes: Array<OIDCProxyScope>  | undefined ;\n    public path_config: OIDCAuthPathConfig  | undefined ;\n    public redirect_after_signin_path: string  | undefined ;\n    public redirect_subpath: string  | undefined ;\n    constructor(base: _OIDCAuthConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'auth_enabled') >= 0) {\n            this.auth_enabled = base.auth_enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'client_id') >= 0) {\n            this.client_id = base.client_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer') >= 0) {\n            this.issuer = base.issuer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'logout_url') >= 0) {\n            this.logout_url = base.logout_url;\n        }\n        if (Object.keys(base).findIndex(key => key === 'scopes') >= 0) {\n            if (base.scopes) {\n                this.scopes = base.scopes.map((original) => newOIDCProxyScopeImpl(original));\n            } else {\n                this.scopes = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'path_config') >= 0) {\n            this.path_config = base.path_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'redirect_after_signin_path') >= 0) {\n            this.redirect_after_signin_path = base.redirect_after_signin_path;\n        }\n        if (Object.keys(base).findIndex(key => key === 'redirect_subpath') >= 0) {\n            this.redirect_subpath = base.redirect_subpath;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.scopes !== undefined) {\n            for (const item of this.scopes) {\n                if (item !== undefined && (item as OIDCProxyScopeImpl)._remove_builtin_extensions !== undefined) {\n                    (item as OIDCProxyScopeImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newOIDCAuthConfigImpl(base: _OIDCAuthConfig): OIDCAuthConfigImpl {\n    return new OIDCAuthConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A specific path that will be used in included_paths/excluded_paths for authentication.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCAuthURI { \n    /**\n     * A specific path that will be used in included_paths/excluded_paths for authentication.\n     */\n    path?: string;\n}\n\nexport interface OIDCAuthURI extends _OIDCAuthURI {\n    _builtin_original?: _OIDCAuthURI;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCAuthURIImpl  implements _OIDCAuthURI {\n    _builtin_original?: _OIDCAuthURI = undefined;\n    public path: string  | undefined ;\n    constructor(base: _OIDCAuthURI) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'path') >= 0) {\n            this.path = base.path;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOIDCAuthURIImpl(base: _OIDCAuthURI): OIDCAuthURIImpl {\n    return new OIDCAuthURIImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _OIDCAuthURI, OIDCAuthURI, OIDCAuthURIImpl, newOIDCAuthURIImpl } from './oIDCAuthURI';\n\n\n/**\n * The configuration of included_paths and excluded_paths that will be used for authentication. Paths in included_paths will require user authentication before allowing access, Paths in excluded_paths will allow access without user authentication. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCAuthPathConfig { \n    /**\n     * A list of paths that will require the user to have authenticated before allowing access. If this list is unset, all paths will require authentication. \n     */\n    included_paths?: Array<OIDCAuthURI>;\n    /**\n     * A list of paths that allow user access without authentication. If the included_paths are not set, all paths except paths in excluded_paths require authentication before allowing access \n     */\n    excluded_paths?: Array<OIDCAuthURI>;\n}\n\nexport interface OIDCAuthPathConfig extends _OIDCAuthPathConfig {\n    _builtin_original?: _OIDCAuthPathConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCAuthPathConfigImpl  implements _OIDCAuthPathConfig {\n    _builtin_original?: _OIDCAuthPathConfig = undefined;\n    public included_paths: Array<OIDCAuthURI>  | undefined ;\n    public excluded_paths: Array<OIDCAuthURI>  | undefined ;\n    constructor(base: _OIDCAuthPathConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'included_paths') >= 0) {\n            if (base.included_paths) {\n                this.included_paths = base.included_paths.map((original) => newOIDCAuthURIImpl(original));\n            } else {\n                this.included_paths = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'excluded_paths') >= 0) {\n            if (base.excluded_paths) {\n                this.excluded_paths = base.excluded_paths.map((original) => newOIDCAuthURIImpl(original));\n            } else {\n                this.excluded_paths = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.included_paths !== undefined) {\n            for (const item of this.included_paths) {\n                if (item !== undefined && (item as OIDCAuthURIImpl)._remove_builtin_extensions !== undefined) {\n                    (item as OIDCAuthURIImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.excluded_paths !== undefined) {\n            for (const item of this.excluded_paths) {\n                if (item !== undefined && (item as OIDCAuthURIImpl)._remove_builtin_extensions !== undefined) {\n                    (item as OIDCAuthURIImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newOIDCAuthPathConfigImpl(base: _OIDCAuthPathConfig): OIDCAuthPathConfigImpl {\n    return new OIDCAuthPathConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The media type(MIME) that will be substituted in OIDC proxy.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCContentType { \n    /**\n     * The name of the media type that we want to substitute.\n     */\n    name: string;\n}\n\nexport interface OIDCContentType extends _OIDCContentType {\n    _builtin_original?: _OIDCContentType;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCContentTypeImpl  implements _OIDCContentType {\n    _builtin_original?: _OIDCContentType = undefined;\n    public name: string ;\n    constructor(base: _OIDCContentType) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOIDCContentTypeImpl(base: _OIDCContentType): OIDCContentTypeImpl {\n    return new OIDCContentTypeImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _OIDCProxyHeader, OIDCProxyHeader, OIDCProxyHeaderImpl, newOIDCProxyHeaderImpl } from './oIDCProxyHeader';\nimport { _OIDCProxyContentManipulation, OIDCProxyContentManipulation, OIDCProxyContentManipulationImpl, newOIDCProxyContentManipulationImpl } from './oIDCProxyContentManipulation';\nimport { _OIDCProxyUpstreamConfig, OIDCProxyUpstreamConfig, OIDCProxyUpstreamConfigImpl, newOIDCProxyUpstreamConfigImpl } from './oIDCProxyUpstreamConfig';\nimport { _OIDCAuthConfig, OIDCAuthConfig, OIDCAuthConfigImpl, newOIDCAuthConfigImpl } from './oIDCAuthConfig';\nimport { _OIDCProxyDomainMapping, OIDCProxyDomainMapping, OIDCProxyDomainMappingImpl, newOIDCProxyDomainMappingImpl } from './oIDCProxyDomainMapping';\n\n\n/**\n * The configuration for OIDC-Proxy to set/substitute headers, set domain name mappings, set authentification configurations if auth is enabled and manipulate content based on its type. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCProxyConfig { \n    headers: OIDCProxyHeader;\n    domain_mapping: OIDCProxyDomainMapping;\n    auth?: OIDCAuthConfig;\n    content_manipulation: OIDCProxyContentManipulation;\n    upstream_config?: OIDCProxyUpstreamConfig;\n}\n\nexport interface OIDCProxyConfig extends _OIDCProxyConfig {\n    _builtin_original?: _OIDCProxyConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCProxyConfigImpl  implements _OIDCProxyConfig {\n    _builtin_original?: _OIDCProxyConfig = undefined;\n    public headers: OIDCProxyHeader ;\n    public domain_mapping: OIDCProxyDomainMapping ;\n    public auth: OIDCAuthConfig  | undefined ;\n    public content_manipulation: OIDCProxyContentManipulation ;\n    public upstream_config: OIDCProxyUpstreamConfig  | undefined ;\n    constructor(base: _OIDCProxyConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'headers') >= 0) {\n            this.headers = base.headers;\n        }\n        if (Object.keys(base).findIndex(key => key === 'domain_mapping') >= 0) {\n            this.domain_mapping = base.domain_mapping;\n        }\n        if (Object.keys(base).findIndex(key => key === 'auth') >= 0) {\n            this.auth = base.auth;\n        }\n        if (Object.keys(base).findIndex(key => key === 'content_manipulation') >= 0) {\n            this.content_manipulation = base.content_manipulation;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_config') >= 0) {\n            this.upstream_config = base.upstream_config;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOIDCProxyConfigImpl(base: _OIDCProxyConfig): OIDCProxyConfigImpl {\n    return new OIDCProxyConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _OIDCContentType, OIDCContentType, OIDCContentTypeImpl, newOIDCContentTypeImpl } from './oIDCContentType';\n\n\n/**\n * The configuration of the content on which proxy will perform substitution.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCProxyContentManipulation { \n    /**\n     * The list of media types (MIME types) on which the proxy will perform content substitution.\n     */\n    media_types?: Array<OIDCContentType>;\n}\n\nexport interface OIDCProxyContentManipulation extends _OIDCProxyContentManipulation {\n    _builtin_original?: _OIDCProxyContentManipulation;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCProxyContentManipulationImpl  implements _OIDCProxyContentManipulation {\n    _builtin_original?: _OIDCProxyContentManipulation = undefined;\n    public media_types: Array<OIDCContentType>  | undefined ;\n    constructor(base: _OIDCProxyContentManipulation) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'media_types') >= 0) {\n            if (base.media_types) {\n                this.media_types = base.media_types.map((original) => newOIDCContentTypeImpl(original));\n            } else {\n                this.media_types = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.media_types !== undefined) {\n            for (const item of this.media_types) {\n                if (item !== undefined && (item as OIDCContentTypeImpl)._remove_builtin_extensions !== undefined) {\n                    (item as OIDCContentTypeImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newOIDCProxyContentManipulationImpl(base: _OIDCProxyContentManipulation): OIDCProxyContentManipulationImpl {\n    return new OIDCProxyContentManipulationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A mapping of internal name to external name so oidc-proxy can rewrite them.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCProxyDomainNameMapping { \n    /**\n     * The internal domain name that we used in the proxy.\n     */\n    internal_name: string;\n    /**\n     * The external domain name that we want to be exposed.\n     */\n    external_name?: string;\n}\n\nexport interface OIDCProxyDomainNameMapping extends _OIDCProxyDomainNameMapping {\n    _builtin_original?: _OIDCProxyDomainNameMapping;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCProxyDomainNameMappingImpl  implements _OIDCProxyDomainNameMapping {\n    _builtin_original?: _OIDCProxyDomainNameMapping = undefined;\n    public internal_name: string ;\n    public external_name: string  | undefined ;\n    constructor(base: _OIDCProxyDomainNameMapping) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'internal_name') >= 0) {\n            this.internal_name = base.internal_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'external_name') >= 0) {\n            this.external_name = base.external_name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOIDCProxyDomainNameMappingImpl(base: _OIDCProxyDomainNameMapping): OIDCProxyDomainNameMappingImpl {\n    return new OIDCProxyDomainNameMappingImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _OIDCProxyDomainNameMapping, OIDCProxyDomainNameMapping, OIDCProxyDomainNameMappingImpl, newOIDCProxyDomainNameMappingImpl } from './oIDCProxyDomainNameMapping';\n\n\n/**\n * The mappings between internal domain names and external domain names.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCProxyDomainMapping { \n    /**\n     * The primary external name is the name that gets exposed publicly.\n     */\n    primary_external_name: string;\n    /**\n     * The primary internal name is the name that used internally in the local environment.\n     */\n    primary_internal_name: string;\n    /**\n     * The upstream mapped host will be rewritten using the service hostname. If primary_internal_name is not empty, primary_internal_name will take precedence. The service port will be appended to the host if the port is a non-standard port (ie. not 443 or 80) \n     */\n    use_service_hostname?: boolean;\n    /**\n     * The recurssive replacement system will replace the same domain multiple times if one is a subdomain of the other. In some cases the replacements were designed with the older this type of replacement in mind. In those cases this value should be set to true, otherwise it should be left default (false). \n     */\n    use_recursive_replacement_system?: boolean;\n    /**\n     * The list of extra mappings between internal and external domain names.\n     */\n    other_mappings?: Array<OIDCProxyDomainNameMapping>;\n}\n\nexport interface OIDCProxyDomainMapping extends _OIDCProxyDomainMapping {\n    _builtin_original?: _OIDCProxyDomainMapping;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCProxyDomainMappingImpl  implements _OIDCProxyDomainMapping {\n    _builtin_original?: _OIDCProxyDomainMapping = undefined;\n    public primary_external_name: string ;\n    public primary_internal_name: string ;\n    public use_service_hostname: boolean  | undefined ;\n    public use_recursive_replacement_system: boolean  | undefined ;\n    public other_mappings: Array<OIDCProxyDomainNameMapping>  | undefined ;\n    constructor(base: _OIDCProxyDomainMapping) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'primary_external_name') >= 0) {\n            this.primary_external_name = base.primary_external_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'primary_internal_name') >= 0) {\n            this.primary_internal_name = base.primary_internal_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'use_service_hostname') >= 0) {\n            this.use_service_hostname = base.use_service_hostname;\n        }\n        if (Object.keys(base).findIndex(key => key === 'use_recursive_replacement_system') >= 0) {\n            this.use_recursive_replacement_system = base.use_recursive_replacement_system;\n        }\n        if (Object.keys(base).findIndex(key => key === 'other_mappings') >= 0) {\n            if (base.other_mappings) {\n                this.other_mappings = base.other_mappings.map((original) => newOIDCProxyDomainNameMappingImpl(original));\n            } else {\n                this.other_mappings = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.other_mappings !== undefined) {\n            for (const item of this.other_mappings) {\n                if (item !== undefined && (item as OIDCProxyDomainNameMappingImpl)._remove_builtin_extensions !== undefined) {\n                    (item as OIDCProxyDomainNameMappingImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newOIDCProxyDomainMappingImpl(base: _OIDCProxyDomainMapping): OIDCProxyDomainMappingImpl {\n    return new OIDCProxyDomainMappingImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The mapping between header name and value.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCProxyHeaderMapping { \n    /**\n     * The name of the header that will be set.\n     */\n    name?: string;\n    /**\n     * The value of the header that will be set.\n     */\n    value?: string;\n}\n\nexport interface OIDCProxyHeaderMapping extends _OIDCProxyHeaderMapping {\n    _builtin_original?: _OIDCProxyHeaderMapping;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCProxyHeaderMappingImpl  implements _OIDCProxyHeaderMapping {\n    _builtin_original?: _OIDCProxyHeaderMapping = undefined;\n    public name: string  | undefined ;\n    public value: string  | undefined ;\n    constructor(base: _OIDCProxyHeaderMapping) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'value') >= 0) {\n            this.value = base.value;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOIDCProxyHeaderMappingImpl(base: _OIDCProxyHeaderMapping): OIDCProxyHeaderMappingImpl {\n    return new OIDCProxyHeaderMappingImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _OIDCProxyStandardHeader, OIDCProxyStandardHeader, OIDCProxyStandardHeaderImpl, newOIDCProxyStandardHeaderImpl } from './oIDCProxyStandardHeader';\nimport { _OIDCProxyHeaderMapping, OIDCProxyHeaderMapping, OIDCProxyHeaderMappingImpl, newOIDCProxyHeaderMappingImpl } from './oIDCProxyHeaderMapping';\n\n\n/**\n * This object allows users to configure how domain substitution is performed on headers. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCProxyDomainSubstitution { \n    standard_headers?: OIDCProxyStandardHeader;\n    /**\n     * The list of other headers that need to be substituted.\n     */\n    other_headers?: Array<OIDCProxyHeaderMapping>;\n    /**\n     * Configure whether domain substitution acts on the path as well as the host in the uri.\n     */\n    path?: boolean;\n}\n\nexport interface OIDCProxyDomainSubstitution extends _OIDCProxyDomainSubstitution {\n    _builtin_original?: _OIDCProxyDomainSubstitution;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCProxyDomainSubstitutionImpl  implements _OIDCProxyDomainSubstitution {\n    _builtin_original?: _OIDCProxyDomainSubstitution = undefined;\n    public standard_headers: OIDCProxyStandardHeader  | undefined ;\n    public other_headers: Array<OIDCProxyHeaderMapping>  | undefined ;\n    public path: boolean  | undefined ;\n    constructor(base: _OIDCProxyDomainSubstitution) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'standard_headers') >= 0) {\n            this.standard_headers = base.standard_headers;\n        }\n        if (Object.keys(base).findIndex(key => key === 'other_headers') >= 0) {\n            if (base.other_headers) {\n                this.other_headers = base.other_headers.map((original) => newOIDCProxyHeaderMappingImpl(original));\n            } else {\n                this.other_headers = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'path') >= 0) {\n            this.path = base.path;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.other_headers !== undefined) {\n            for (const item of this.other_headers) {\n                if (item !== undefined && (item as OIDCProxyHeaderMappingImpl)._remove_builtin_extensions !== undefined) {\n                    (item as OIDCProxyHeaderMappingImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newOIDCProxyDomainSubstitutionImpl(base: _OIDCProxyDomainSubstitution): OIDCProxyDomainSubstitutionImpl {\n    return new OIDCProxyDomainSubstitutionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _OIDCProxyHeaderOverride, OIDCProxyHeaderOverride, OIDCProxyHeaderOverrideImpl, newOIDCProxyHeaderOverrideImpl } from './oIDCProxyHeaderOverride';\nimport { _OIDCProxyDomainSubstitution, OIDCProxyDomainSubstitution, OIDCProxyDomainSubstitutionImpl, newOIDCProxyDomainSubstitutionImpl } from './oIDCProxyDomainSubstitution';\n\n\n/**\n * The configuration of header fields for oidc proxy to set/substitute.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCProxyHeader { \n    domain_substitution?: OIDCProxyDomainSubstitution;\n    header_overrides?: OIDCProxyHeaderOverride;\n}\n\nexport interface OIDCProxyHeader extends _OIDCProxyHeader {\n    _builtin_original?: _OIDCProxyHeader;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCProxyHeaderImpl  implements _OIDCProxyHeader {\n    _builtin_original?: _OIDCProxyHeader = undefined;\n    public domain_substitution: OIDCProxyDomainSubstitution  | undefined ;\n    public header_overrides: OIDCProxyHeaderOverride  | undefined ;\n    constructor(base: _OIDCProxyHeader) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'domain_substitution') >= 0) {\n            this.domain_substitution = base.domain_substitution;\n        }\n        if (Object.keys(base).findIndex(key => key === 'header_overrides') >= 0) {\n            this.header_overrides = base.header_overrides;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOIDCProxyHeaderImpl(base: _OIDCProxyHeader): OIDCProxyHeaderImpl {\n    return new OIDCProxyHeaderImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Describes how to match a header. Any provided properties must match. E.g. if a name and value are provided, both the name and the value must match, whereas if only the name is provided, any headers of that name, regardless of the value, will match. If no properties are provided, nothing will match. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCProxyHeaderMatch { \n    /**\n     * The header name that will be removed. The match is case insensitive.\n     */\n    name_exact?: string;\n    /**\n     * A regex describing the value to match.\n     */\n    value_regex?: string;\n}\n\nexport interface OIDCProxyHeaderMatch extends _OIDCProxyHeaderMatch {\n    _builtin_original?: _OIDCProxyHeaderMatch;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCProxyHeaderMatchImpl  implements _OIDCProxyHeaderMatch {\n    _builtin_original?: _OIDCProxyHeaderMatch = undefined;\n    public name_exact: string  | undefined ;\n    public value_regex: string  | undefined ;\n    constructor(base: _OIDCProxyHeaderMatch) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name_exact') >= 0) {\n            this.name_exact = base.name_exact;\n        }\n        if (Object.keys(base).findIndex(key => key === 'value_regex') >= 0) {\n            this.value_regex = base.value_regex;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOIDCProxyHeaderMatchImpl(base: _OIDCProxyHeaderMatch): OIDCProxyHeaderMatchImpl {\n    return new OIDCProxyHeaderMatchImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The header name that will be removed.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCProxyHeaderName { \n    /**\n     * The header name that will be removed.\n     */\n    name?: string;\n}\n\nexport interface OIDCProxyHeaderName extends _OIDCProxyHeaderName {\n    _builtin_original?: _OIDCProxyHeaderName;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCProxyHeaderNameImpl  implements _OIDCProxyHeaderName {\n    _builtin_original?: _OIDCProxyHeaderName = undefined;\n    public name: string  | undefined ;\n    constructor(base: _OIDCProxyHeaderName) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOIDCProxyHeaderNameImpl(base: _OIDCProxyHeaderName): OIDCProxyHeaderNameImpl {\n    return new OIDCProxyHeaderNameImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _OIDCProxyHeaderUserConfig, OIDCProxyHeaderUserConfig, OIDCProxyHeaderUserConfigImpl, newOIDCProxyHeaderUserConfigImpl } from './oIDCProxyHeaderUserConfig';\n\n\n/**\n * This object allows users to control how headers are configured \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCProxyHeaderOverride { \n    request?: OIDCProxyHeaderUserConfig;\n    response?: OIDCProxyHeaderUserConfig;\n}\n\nexport interface OIDCProxyHeaderOverride extends _OIDCProxyHeaderOverride {\n    _builtin_original?: _OIDCProxyHeaderOverride;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCProxyHeaderOverrideImpl  implements _OIDCProxyHeaderOverride {\n    _builtin_original?: _OIDCProxyHeaderOverride = undefined;\n    public request: OIDCProxyHeaderUserConfig  | undefined ;\n    public response: OIDCProxyHeaderUserConfig  | undefined ;\n    constructor(base: _OIDCProxyHeaderOverride) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'request') >= 0) {\n            this.request = base.request;\n        }\n        if (Object.keys(base).findIndex(key => key === 'response') >= 0) {\n            this.response = base.response;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOIDCProxyHeaderOverrideImpl(base: _OIDCProxyHeaderOverride): OIDCProxyHeaderOverrideImpl {\n    return new OIDCProxyHeaderOverrideImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The initial header name that will be replaced by the new name.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCProxyHeaderReplace { \n    /**\n     * The header name that will be replaced. The match is case insensitive.\n     */\n    old_name: string;\n    /**\n     * The header name to be replaced in a case sensitive manner.\n     */\n    new_name: string;\n}\n\nexport interface OIDCProxyHeaderReplace extends _OIDCProxyHeaderReplace {\n    _builtin_original?: _OIDCProxyHeaderReplace;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCProxyHeaderReplaceImpl  implements _OIDCProxyHeaderReplace {\n    _builtin_original?: _OIDCProxyHeaderReplace = undefined;\n    public old_name: string ;\n    public new_name: string ;\n    constructor(base: _OIDCProxyHeaderReplace) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'old_name') >= 0) {\n            this.old_name = base.old_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'new_name') >= 0) {\n            this.new_name = base.new_name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOIDCProxyHeaderReplaceImpl(base: _OIDCProxyHeaderReplace): OIDCProxyHeaderReplaceImpl {\n    return new OIDCProxyHeaderReplaceImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * This object configures more advanced rewrites on a header. It enables the specification of specific uri parameters and encodings to enable richer substitution. This filter expects uris with paramaters that start with a \\'?\\', seperated by \\'&\\' and are uri-encoded. eg: \\\"https://my-site.com?redirect=https%3A%2F%2Fmy-site.com\\\" \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _URIParameterRewriteFilter { \n    /**\n     * The type of object this is. This is used when an interface expects a OIDCProxyHeaderRewriteFilter. \n     */\n    rewrite_type: string;\n    /**\n     * The header to rewrite. Case insensitive\n     */\n    header: string;\n    /**\n     * The uri parameter to rewrite.\n     */\n    parameter: string;\n    /**\n     * The value to find in plaintext.\n     */\n    exact_value?: string;\n    /**\n     * The value to replace in plaintext.\n     */\n    exact_rewrite_value?: string;\n    /**\n     * This setting will cause the filter to treat the parameter as base64 encoded and will cause the filter to decode before making the substitution, and reencode after the substitution. \n     */\n    base64?: boolean;\n    /**\n     * This setting will cause the filter to treat the parameter as deflated. This will cause the filter to inflate the paramater before the substitution is made, and deflate after the substitution. \n     */\n    deflate?: boolean;\n}\n\nexport interface URIParameterRewriteFilter extends _URIParameterRewriteFilter {\n    _builtin_original?: _URIParameterRewriteFilter;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class URIParameterRewriteFilterImpl  implements _URIParameterRewriteFilter {\n    _builtin_original?: _URIParameterRewriteFilter = undefined;\n    public rewrite_type: string ;\n    public header: string ;\n    public parameter: string ;\n    public exact_value: string  | undefined ;\n    public exact_rewrite_value: string  | undefined ;\n    public base64: boolean  | undefined ;\n    public deflate: boolean  | undefined ;\n    constructor(base: _URIParameterRewriteFilter) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'rewrite_type') >= 0) {\n            this.rewrite_type = base.rewrite_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'header') >= 0) {\n            this.header = base.header;\n        }\n        if (Object.keys(base).findIndex(key => key === 'parameter') >= 0) {\n            this.parameter = base.parameter;\n        }\n        if (Object.keys(base).findIndex(key => key === 'exact_value') >= 0) {\n            this.exact_value = base.exact_value;\n        }\n        if (Object.keys(base).findIndex(key => key === 'exact_rewrite_value') >= 0) {\n            this.exact_rewrite_value = base.exact_rewrite_value;\n        }\n        if (Object.keys(base).findIndex(key => key === 'base64') >= 0) {\n            this.base64 = base.base64;\n        }\n        if (Object.keys(base).findIndex(key => key === 'deflate') >= 0) {\n            this.deflate = base.deflate;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newURIParameterRewriteFilterImpl(base: _URIParameterRewriteFilter): URIParameterRewriteFilterImpl {\n    return new URIParameterRewriteFilterImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _URIParameterRewriteFilter, URIParameterRewriteFilter, URIParameterRewriteFilterImpl, newURIParameterRewriteFilterImpl } from './uRIParameterRewriteFilter';\n\n\n/**\n * A filter for modifying a header value. For example you can use this to rewrite a specific value in a paramater. This is helpful if your application has state in uri parameters that need to be modified.\n */\n/**\n * @type OIDCProxyHeaderRewriteFilter\n * A filter for modifying a header value. For example you can use this to rewrite a specific value in a paramater. This is helpful if your application has state in uri parameters that need to be modified.\n * @export\n */\nexport type OIDCProxyHeaderRewriteFilter = URIParameterRewriteFilter;\nexport type OIDCProxyHeaderRewriteFilterImpl = URIParameterRewriteFilterImpl;\nexport type _OIDCProxyHeaderRewriteFilter = _URIParameterRewriteFilter;\n\nexport function newOIDCProxyHeaderRewriteFilterImpl(base :_OIDCProxyHeaderRewriteFilter): _OIDCProxyHeaderRewriteFilter {\n    if (instanceOfURIParameterRewriteFilter(base)) {\n        return newURIParameterRewriteFilterImpl(base);\n    }\n\n    // Worse case return it without the builtin copies. The various bits of code handle\n    // it missing.\n    return base;\n}\n\nexport function instanceOfURIParameterRewriteFilter(object: any): object is URIParameterRewriteFilter {\n    return object.rewrite_type === \"uriParameterRewrite\";\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _OIDCProxyHeaderRewriteFilter, OIDCProxyHeaderRewriteFilter, OIDCProxyHeaderRewriteFilterImpl, newOIDCProxyHeaderRewriteFilterImpl } from './oIDCProxyHeaderRewriteFilter';\nimport { _OIDCProxyHeaderReplace, OIDCProxyHeaderReplace, OIDCProxyHeaderReplaceImpl, newOIDCProxyHeaderReplaceImpl } from './oIDCProxyHeaderReplace';\nimport { _OIDCProxyHeaderName, OIDCProxyHeaderName, OIDCProxyHeaderNameImpl, newOIDCProxyHeaderNameImpl } from './oIDCProxyHeaderName';\nimport { _OIDCProxyHeaderMatch, OIDCProxyHeaderMatch, OIDCProxyHeaderMatchImpl, newOIDCProxyHeaderMatchImpl } from './oIDCProxyHeaderMatch';\nimport { _OIDCProxyHeaderMapping, OIDCProxyHeaderMapping, OIDCProxyHeaderMappingImpl, newOIDCProxyHeaderMappingImpl } from './oIDCProxyHeaderMapping';\n\n\n/**\n * The configuration for users to set header value, add header fields and remove existing header fields. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCProxyHeaderUserConfig { \n    /**\n     * The list of existing headers that will be set to new values.\n     */\n    set?: Array<OIDCProxyHeaderMapping>;\n    /**\n     * The list of headers (name and value) that will be added.\n     */\n    add?: Array<OIDCProxyHeaderMapping>;\n    /**\n     * The list of header names that will be removed.\n     */\n    remove?: Array<OIDCProxyHeaderName>;\n    /**\n     * The list of headers that will be removed. If multiple values for the header are present, only the matching ones will be removed. If after removal, the header is empty, it will be removed entirely. \n     */\n    remove_match?: Array<OIDCProxyHeaderMatch>;\n    /**\n     * A list of additional mapping filters to be applied\n     */\n    filters?: Array<OIDCProxyHeaderRewriteFilter>;\n    /**\n     * The list of header names that will be replaced. If header does not match, it will not be replaced with the new header \n     */\n    replace?: Array<OIDCProxyHeaderReplace>;\n}\n\nexport interface OIDCProxyHeaderUserConfig extends _OIDCProxyHeaderUserConfig {\n    _builtin_original?: _OIDCProxyHeaderUserConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCProxyHeaderUserConfigImpl  implements _OIDCProxyHeaderUserConfig {\n    _builtin_original?: _OIDCProxyHeaderUserConfig = undefined;\n    public set: Array<OIDCProxyHeaderMapping>  | undefined ;\n    public add: Array<OIDCProxyHeaderMapping>  | undefined ;\n    public remove: Array<OIDCProxyHeaderName>  | undefined ;\n    public remove_match: Array<OIDCProxyHeaderMatch>  | undefined ;\n    public filters: Array<OIDCProxyHeaderRewriteFilter>  | undefined ;\n    public replace: Array<OIDCProxyHeaderReplace>  | undefined ;\n    constructor(base: _OIDCProxyHeaderUserConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'set') >= 0) {\n            if (base.set) {\n                this.set = base.set.map((original) => newOIDCProxyHeaderMappingImpl(original));\n            } else {\n                this.set = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'add') >= 0) {\n            if (base.add) {\n                this.add = base.add.map((original) => newOIDCProxyHeaderMappingImpl(original));\n            } else {\n                this.add = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'remove') >= 0) {\n            if (base.remove) {\n                this.remove = base.remove.map((original) => newOIDCProxyHeaderNameImpl(original));\n            } else {\n                this.remove = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'remove_match') >= 0) {\n            if (base.remove_match) {\n                this.remove_match = base.remove_match.map((original) => newOIDCProxyHeaderMatchImpl(original));\n            } else {\n                this.remove_match = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'filters') >= 0) {\n            if (base.filters) {\n                this.filters = base.filters.map((original) => newOIDCProxyHeaderRewriteFilterImpl(original));\n            } else {\n                this.filters = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'replace') >= 0) {\n            if (base.replace) {\n                this.replace = base.replace.map((original) => newOIDCProxyHeaderReplaceImpl(original));\n            } else {\n                this.replace = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.set !== undefined) {\n            for (const item of this.set) {\n                if (item !== undefined && (item as OIDCProxyHeaderMappingImpl)._remove_builtin_extensions !== undefined) {\n                    (item as OIDCProxyHeaderMappingImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.add !== undefined) {\n            for (const item of this.add) {\n                if (item !== undefined && (item as OIDCProxyHeaderMappingImpl)._remove_builtin_extensions !== undefined) {\n                    (item as OIDCProxyHeaderMappingImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.remove !== undefined) {\n            for (const item of this.remove) {\n                if (item !== undefined && (item as OIDCProxyHeaderNameImpl)._remove_builtin_extensions !== undefined) {\n                    (item as OIDCProxyHeaderNameImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.remove_match !== undefined) {\n            for (const item of this.remove_match) {\n                if (item !== undefined && (item as OIDCProxyHeaderMatchImpl)._remove_builtin_extensions !== undefined) {\n                    (item as OIDCProxyHeaderMatchImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.filters !== undefined) {\n            for (const item of this.filters) {\n                if (item !== undefined && (item as OIDCProxyHeaderRewriteFilterImpl)._remove_builtin_extensions !== undefined) {\n                    (item as OIDCProxyHeaderRewriteFilterImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.replace !== undefined) {\n            for (const item of this.replace) {\n                if (item !== undefined && (item as OIDCProxyHeaderReplaceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as OIDCProxyHeaderReplaceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newOIDCProxyHeaderUserConfigImpl(base: _OIDCProxyHeaderUserConfig): OIDCProxyHeaderUserConfigImpl {\n    return new OIDCProxyHeaderUserConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Standard headers are headers that can be substituted without user\\'s configurations unless specified. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCProxyStandardHeader { \n    /**\n     * If the location flag is set to true, the location field will be automatically rewritten.\n     */\n    location?: boolean;\n    /**\n     * If the origin flag is set to true, the origin field will be automatically rewritten.\n     */\n    origin?: boolean;\n    /**\n     * If the host flag is set to true, the host field will be automatically rewritten.\n     */\n    host?: boolean;\n    /**\n     * If the set_cookie is set to true, the set_cookie header will be automatically rewritten. \n     */\n    set_cookie_header?: boolean;\n    /**\n     * If the cookie is set to true, the cookie header will be automatically rewritten.\n     */\n    cookie?: boolean;\n}\n\nexport interface OIDCProxyStandardHeader extends _OIDCProxyStandardHeader {\n    _builtin_original?: _OIDCProxyStandardHeader;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCProxyStandardHeaderImpl  implements _OIDCProxyStandardHeader {\n    _builtin_original?: _OIDCProxyStandardHeader = undefined;\n    public location: boolean  | undefined ;\n    public origin: boolean  | undefined ;\n    public host: boolean  | undefined ;\n    public set_cookie_header: boolean  | undefined ;\n    public cookie: boolean  | undefined ;\n    constructor(base: _OIDCProxyStandardHeader) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'location') >= 0) {\n            this.location = base.location;\n        }\n        if (Object.keys(base).findIndex(key => key === 'origin') >= 0) {\n            this.origin = base.origin;\n        }\n        if (Object.keys(base).findIndex(key => key === 'host') >= 0) {\n            this.host = base.host;\n        }\n        if (Object.keys(base).findIndex(key => key === 'set_cookie_header') >= 0) {\n            this.set_cookie_header = base.set_cookie_header;\n        }\n        if (Object.keys(base).findIndex(key => key === 'cookie') >= 0) {\n            this.cookie = base.cookie;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOIDCProxyStandardHeaderImpl(base: _OIDCProxyStandardHeader): OIDCProxyStandardHeaderImpl {\n    return new OIDCProxyStandardHeaderImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _OIDCProxyUpstreamNTLM, OIDCProxyUpstreamNTLM, OIDCProxyUpstreamNTLMImpl, newOIDCProxyUpstreamNTLMImpl } from './oIDCProxyUpstreamNTLM';\n\n\n/**\n * Controls how the proxy handles authentication with the ustream. Different upstream services may support different types of authentication. This controls whether those are allowed through, or whether the proxy participates in them on behalf of the user. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCProxyUpstreamAuthentication { \n    ntlm?: OIDCProxyUpstreamNTLM;\n}\n\nexport interface OIDCProxyUpstreamAuthentication extends _OIDCProxyUpstreamAuthentication {\n    _builtin_original?: _OIDCProxyUpstreamAuthentication;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCProxyUpstreamAuthenticationImpl  implements _OIDCProxyUpstreamAuthentication {\n    _builtin_original?: _OIDCProxyUpstreamAuthentication = undefined;\n    public ntlm: OIDCProxyUpstreamNTLM  | undefined ;\n    constructor(base: _OIDCProxyUpstreamAuthentication) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'ntlm') >= 0) {\n            this.ntlm = base.ntlm;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOIDCProxyUpstreamAuthenticationImpl(base: _OIDCProxyUpstreamAuthentication): OIDCProxyUpstreamAuthenticationImpl {\n    return new OIDCProxyUpstreamAuthenticationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The configuration of the upstream host and scheme.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCProxyUpstreamConfig { \n    /**\n     * The scheme defines the type of protocol to be used to access the upstream.\n     */\n    scheme: string;\n    /**\n     * The hostname of the upstream server. It will be used to provision the host/authority header for requests the proxy forwards to it.\n     */\n    hostname: string;\n    /**\n     * The port on the upstream to access. The port will be inferred as 80 or 443 if unspecified depending on the scheme.\n     */\n    port?: number | null;\n}\n\nexport interface OIDCProxyUpstreamConfig extends _OIDCProxyUpstreamConfig {\n    _builtin_original?: _OIDCProxyUpstreamConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCProxyUpstreamConfigImpl  implements _OIDCProxyUpstreamConfig {\n    _builtin_original?: _OIDCProxyUpstreamConfig = undefined;\n    public scheme: string ;\n    public hostname: string ;\n    public port: number | null  | undefined ;\n    constructor(base: _OIDCProxyUpstreamConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'scheme') >= 0) {\n            this.scheme = base.scheme;\n        }\n        if (Object.keys(base).findIndex(key => key === 'hostname') >= 0) {\n            this.hostname = base.hostname;\n        }\n        if (Object.keys(base).findIndex(key => key === 'port') >= 0) {\n            this.port = base.port;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOIDCProxyUpstreamConfigImpl(base: _OIDCProxyUpstreamConfig): OIDCProxyUpstreamConfigImpl {\n    return new OIDCProxyUpstreamConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configures the proxy to pass through NTLM authentication. If enabled, the proxy will forward challenges to the client. It will further ensure that challenge responses and further requests from the same downstream connection are sent through the same upstream connection. That is, if this mode is enabled, the proxy will ensure a one to one mapping of downstream connection to upstream connection. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OIDCProxyUpstreamNTLM { \n    /**\n     * Enables NTLM passthrough\n     */\n    ntlm_passthrough: boolean;\n}\n\nexport interface OIDCProxyUpstreamNTLM extends _OIDCProxyUpstreamNTLM {\n    _builtin_original?: _OIDCProxyUpstreamNTLM;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OIDCProxyUpstreamNTLMImpl  implements _OIDCProxyUpstreamNTLM {\n    _builtin_original?: _OIDCProxyUpstreamNTLM = undefined;\n    public ntlm_passthrough: boolean ;\n    constructor(base: _OIDCProxyUpstreamNTLM) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'ntlm_passthrough') >= 0) {\n            this.ntlm_passthrough = base.ntlm_passthrough;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOIDCProxyUpstreamNTLMImpl(base: _OIDCProxyUpstreamNTLM): OIDCProxyUpstreamNTLMImpl {\n    return new OIDCProxyUpstreamNTLMImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Operating system info \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OSInfo { \n    /**\n     * The operating system name\n     */\n    name?: string;\n    /**\n     * The operating system vendor\n     */\n    vendor?: string;\n    /**\n     * The operating system version\n     */\n    version?: string;\n    /**\n     * The operating system release\n     */\n    release?: string;\n    /**\n     * The operating system architecture\n     */\n    architecture?: string;\n}\n\nexport interface OSInfo extends _OSInfo {\n    _builtin_original?: _OSInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OSInfoImpl  implements _OSInfo {\n    _builtin_original?: _OSInfo = undefined;\n    public name: string  | undefined ;\n    public vendor: string  | undefined ;\n    public version: string  | undefined ;\n    public release: string  | undefined ;\n    public architecture: string  | undefined ;\n    constructor(base: _OSInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'vendor') >= 0) {\n            this.vendor = base.vendor;\n        }\n        if (Object.keys(base).findIndex(key => key === 'version') >= 0) {\n            this.version = base.version;\n        }\n        if (Object.keys(base).findIndex(key => key === 'release') >= 0) {\n            this.release = base.release;\n        }\n        if (Object.keys(base).findIndex(key => key === 'architecture') >= 0) {\n            this.architecture = base.architecture;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOSInfoImpl(base: _OSInfo): OSInfoImpl {\n    return new OSInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The portion of the object credentials which contains sensitive infomration. It is write once. The actual credentials are typically returned encrypted in the status. How and whether they are encrypted depends on the encrypt and encryption_key_id parameters. Note that neither of those may be changed once a credential has been created. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ObjectCredentialSecrets { \n    /**\n     * Whether the data should be encrypted. If so, then the encryption_key_id must either be blank (in which case the system will choose one), or it must exist in the system, and the corresponding public key will be used to encrypt the data. If it is false, then the data will be stored as-is. If you also set the encryption_key_id, then the data will be considered encrypted by that key already. \n     */\n    encrypt?: boolean;\n    /**\n     * The hex value of the sha256 hash of the public key\\'s binary data. \n     */\n    encryption_key_id?: string;\n    /**\n     * The username to present to the server.\n     */\n    username?: string;\n    /**\n     * The private key, in pem format, to present to the server. \n     */\n    private_key?: string;\n    /**\n     * Used to decrypt the private key if it has a passphrase. \n     */\n    private_key_passphrase?: string;\n    /**\n     * The password to present to the server.\n     */\n    password?: string;\n}\n\nexport interface ObjectCredentialSecrets extends _ObjectCredentialSecrets {\n    _builtin_original?: _ObjectCredentialSecrets;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ObjectCredentialSecretsImpl  implements _ObjectCredentialSecrets {\n    _builtin_original?: _ObjectCredentialSecrets = undefined;\n    public encrypt: boolean  | undefined ;\n    public encryption_key_id: string  | undefined ;\n    public username: string  | undefined ;\n    public private_key: string  | undefined ;\n    public private_key_passphrase: string  | undefined ;\n    public password: string  | undefined ;\n    constructor(base: _ObjectCredentialSecrets) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'encrypt') >= 0) {\n            this.encrypt = base.encrypt;\n        }\n        if (Object.keys(base).findIndex(key => key === 'encryption_key_id') >= 0) {\n            this.encryption_key_id = base.encryption_key_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'username') >= 0) {\n            this.username = base.username;\n        }\n        if (Object.keys(base).findIndex(key => key === 'private_key') >= 0) {\n            this.private_key = base.private_key;\n        }\n        if (Object.keys(base).findIndex(key => key === 'private_key_passphrase') >= 0) {\n            this.private_key_passphrase = base.private_key_passphrase;\n        }\n        if (Object.keys(base).findIndex(key => key === 'password') >= 0) {\n            this.password = base.password;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newObjectCredentialSecretsImpl(base: _ObjectCredentialSecrets): ObjectCredentialSecretsImpl {\n    return new ObjectCredentialSecretsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ObjectCredentialSecrets, ObjectCredentialSecrets, ObjectCredentialSecretsImpl, newObjectCredentialSecretsImpl } from './objectCredentialSecrets';\n\n\n/**\n * The specification of the object credentials. The object_id and object_type link the credential to an object in the system. The purpose describes how the credential is used, and the priority indicates from high to low which credential should be used first, if a given object has multiple. Only a single ObjectCredential can exist for a given (object_id, object_type, purpose, priority, org_id) combination. Note that once set, \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ObjectCredentialSpec { \n    /**\n     * Unique identifier\n     */\n    object_id: string;\n    /**\n     * The type of an object\n     */\n    object_type: string;\n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n    /**\n     * The purpose of a credential. This allows a given object to store multiple credentials which may be accessed for different purposes, such as credential stuffing vs mutual TLS. Agilicus supports some default ones:   - `stuffing`:  This credential will be used for credential stuffing.     For example, you can configure an SSH Resource to present a private key without the end     user ever seeing it. \n     */\n    purpose: string;\n    /**\n     * The priority of the credential. Higher priorities are used first. \n     */\n    priority: number;\n    secrets?: ObjectCredentialSecrets;\n    /**\n     * A short description of the secret. E.g. what it applies to, how long it\\'s good for and so on. \n     */\n    description?: string;\n}\n\nexport interface ObjectCredentialSpec extends _ObjectCredentialSpec {\n    _builtin_original?: _ObjectCredentialSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ObjectCredentialSpecImpl  implements _ObjectCredentialSpec {\n    _builtin_original?: _ObjectCredentialSpec = undefined;\n    public object_id: string ;\n    public object_type: string ;\n    public org_id: string  | undefined ;\n    public purpose: string ;\n    public priority: number ;\n    public secrets: ObjectCredentialSecrets  | undefined ;\n    public description: string  | undefined ;\n    constructor(base: _ObjectCredentialSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'object_id') >= 0) {\n            this.object_id = base.object_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'object_type') >= 0) {\n            this.object_type = base.object_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'purpose') >= 0) {\n            this.purpose = base.purpose;\n        }\n        if (Object.keys(base).findIndex(key => key === 'priority') >= 0) {\n            this.priority = base.priority;\n        }\n        if (Object.keys(base).findIndex(key => key === 'secrets') >= 0) {\n            this.secrets = base.secrets;\n        }\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newObjectCredentialSpecImpl(base: _ObjectCredentialSpec): ObjectCredentialSpecImpl {\n    return new ObjectCredentialSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourceMember, ResourceMember, ResourceMemberImpl, newResourceMemberImpl } from './resourceMember';\n\n\n/**\n * The read-only, inferred properties of the ObjectCredential. Includes the possibly encrypted secrets. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ObjectCredentialStatus { \n    /**\n     * Whether or not the credentials returned here are encrypted. \n     */\n    is_encrypted?: boolean;\n    /**\n     * The hex value of the sha256 hash of the public key used to encrypt the data. \n     */\n    encryption_key_id?: string;\n    /**\n     * The username to present to the server\n     */\n    username?: string;\n    /**\n     * The private key, in pem format, possibly encrypted, to present to the server. \n     */\n    private_key?: string;\n    /**\n     * Used to decrypt the private key if it has a passphrase. Possibly encrypted. \n     */\n    private_key_passphrase?: string;\n    /**\n     * The password to present to the server. Possibly encrypted.\n     */\n    password?: string;\n    /**\n     * A list of resources that are associated with this Credential. This would be populated if the credential type is a group.\n     */\n    resource_members?: Array<ResourceMember>;\n}\n\nexport interface ObjectCredentialStatus extends _ObjectCredentialStatus {\n    _builtin_original?: _ObjectCredentialStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ObjectCredentialStatusImpl  implements _ObjectCredentialStatus {\n    _builtin_original?: _ObjectCredentialStatus = undefined;\n    public is_encrypted: boolean  | undefined ;\n    public encryption_key_id: string  | undefined ;\n    public username: string  | undefined ;\n    public private_key: string  | undefined ;\n    public private_key_passphrase: string  | undefined ;\n    public password: string  | undefined ;\n    public resource_members: Array<ResourceMember>  | undefined ;\n    constructor(base: _ObjectCredentialStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'is_encrypted') >= 0) {\n            this.is_encrypted = base.is_encrypted;\n        }\n        if (Object.keys(base).findIndex(key => key === 'encryption_key_id') >= 0) {\n            this.encryption_key_id = base.encryption_key_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'username') >= 0) {\n            this.username = base.username;\n        }\n        if (Object.keys(base).findIndex(key => key === 'private_key') >= 0) {\n            this.private_key = base.private_key;\n        }\n        if (Object.keys(base).findIndex(key => key === 'private_key_passphrase') >= 0) {\n            this.private_key_passphrase = base.private_key_passphrase;\n        }\n        if (Object.keys(base).findIndex(key => key === 'password') >= 0) {\n            this.password = base.password;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_members') >= 0) {\n            if (base.resource_members) {\n                this.resource_members = base.resource_members.map((original) => newResourceMemberImpl(original));\n            } else {\n                this.resource_members = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.resource_members !== undefined) {\n            for (const item of this.resource_members) {\n                if (item !== undefined && (item as ResourceMemberImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ResourceMemberImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newObjectCredentialStatusImpl(base: _ObjectCredentialStatus): ObjectCredentialStatusImpl {\n    return new ObjectCredentialStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The status of an object - active: the object is active and operating as specified - pending_delete: the object is waiting to be deleted. Its underlying data or resources may still exist. - deleted: the object has been deleted. Its underying data or resources have been removed. - down: the object is not operating as specified. For example, it may have lost connectivity. \n */\nexport type _ObjectOperStatus = 'active' | 'pending_delete' | 'deleted' | 'down';\nexport type ObjectOperStatus = _ObjectOperStatus\n\nexport type ObjectOperStatusImpl = ObjectOperStatus;\nexport const ObjectOperStatus = {\n    active: 'active' as ObjectOperStatus,\n    pending_delete: 'pending_delete' as ObjectOperStatus,\n    deleted: 'deleted' as ObjectOperStatus,\n    down: 'down' as ObjectOperStatus\n};\n\nexport function newObjectOperStatusImpl(base: _ObjectOperStatus): ObjectOperStatusImpl {\n    return base;\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _OneTimeUseActionChallengeSpec, OneTimeUseActionChallengeSpec, OneTimeUseActionChallengeSpecImpl, newOneTimeUseActionChallengeSpecImpl } from './oneTimeUseActionChallengeSpec';\n\n\n/**\n * A challenge which when answered will take a programmatic action, such as making an HTTP request. This action may be configured to act on behalf of a particular user by retrieving a short lived token with a predefined set of scopes. Parameters of the action such as an HTTP body are also configurable. The main purpose of a OneTimeUseActionChallenge is to allow a user to take an action such as approving a request without needing to log in to the system. Proof of the user\\'s ability to do this is obtained via the challenge being delivered to the user over a trusted channel such as webpush or message inboxes.  Creating a OneTimeUseActionChallenge creates a Challenge which may be associated with a user so they can poll it for completion. That challenge tracks the status of the challenge.  The response to creating a OneTimeUseActionChallenge contains the values needed to answer the challenge. The caller is responsible for forwarding these to the appropriate users while ensuring secrecy. The challenge itself is associated with a particular user so that they may poll it for its status.  Multiple actors may answer the challenge. Each actor is provided their own challenge answer to ensure that we can uniquely identify who answered the challenge. This mechanism allows an action to be taken by exactly one of many users -- whoever gets to it first -- while providing each user as little capability as necessary to take the action.  Once created the challenge cannot be modified. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OneTimeUseActionChallenge { \n    spec: OneTimeUseActionChallengeSpec;\n}\n\nexport interface OneTimeUseActionChallenge extends _OneTimeUseActionChallenge {\n    _builtin_original?: _OneTimeUseActionChallenge;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OneTimeUseActionChallengeImpl  implements _OneTimeUseActionChallenge {\n    _builtin_original?: _OneTimeUseActionChallenge = undefined;\n    public spec: OneTimeUseActionChallengeSpec ;\n    constructor(base: _OneTimeUseActionChallenge) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOneTimeUseActionChallengeImpl(base: _OneTimeUseActionChallenge): OneTimeUseActionChallengeImpl {\n    return new OneTimeUseActionChallengeImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ChallengeActor, ChallengeActor, ChallengeActorImpl, newChallengeActorImpl } from './challengeActor';\n\n\n/**\n * Provides the details needed to answer the challenge for a given actor. Ensure that the answer can only be seen/viewed by the associated actor. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OneTimeUseActionChallengeAnswerDetail { \n    actor: ChallengeActor;\n    /**\n     * The URI to GET in order to approve the challenge. Accessing this URI will trigger the one-time use action for approval. Keep this URI secret. \n     */\n    approve_uri: string;\n    /**\n     * The URI to GET in order to decline the challenge. Accessing this URI will trigger the one-time use action for declining. Keep this URI secret. \n     */\n    decline_uri: string;\n}\n\nexport interface OneTimeUseActionChallengeAnswerDetail extends _OneTimeUseActionChallengeAnswerDetail {\n    _builtin_original?: _OneTimeUseActionChallengeAnswerDetail;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OneTimeUseActionChallengeAnswerDetailImpl  implements _OneTimeUseActionChallengeAnswerDetail {\n    _builtin_original?: _OneTimeUseActionChallengeAnswerDetail = undefined;\n    public actor: ChallengeActor ;\n    public approve_uri: string ;\n    public decline_uri: string ;\n    constructor(base: _OneTimeUseActionChallengeAnswerDetail) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'actor') >= 0) {\n            this.actor = base.actor;\n        }\n        if (Object.keys(base).findIndex(key => key === 'approve_uri') >= 0) {\n            this.approve_uri = base.approve_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'decline_uri') >= 0) {\n            this.decline_uri = base.decline_uri;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOneTimeUseActionChallengeAnswerDetailImpl(base: _OneTimeUseActionChallengeAnswerDetail): OneTimeUseActionChallengeAnswerDetailImpl {\n    return new OneTimeUseActionChallengeAnswerDetailImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _OneTimeUseActionChallengeAnswerDetail, OneTimeUseActionChallengeAnswerDetail, OneTimeUseActionChallengeAnswerDetailImpl, newOneTimeUseActionChallengeAnswerDetailImpl } from './oneTimeUseActionChallengeAnswerDetail';\nimport { _OneTimeUseActionChallenge, OneTimeUseActionChallenge, OneTimeUseActionChallengeImpl, newOneTimeUseActionChallengeImpl } from './oneTimeUseActionChallenge';\nimport { _Challenge, Challenge, ChallengeImpl, newChallengeImpl } from './challenge';\n\n\n/**\n * The response to creating the OneTimeUseActionChallenge. This contains the newly created challenge, as well as the details necessary to answer it. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OneTimeUseActionChallengeResponse { \n    challenge: Challenge;\n    one_time_use_challenge: OneTimeUseActionChallenge;\n    /**\n     * A list of answers per actor\n     */\n    answer_details: Array<OneTimeUseActionChallengeAnswerDetail>;\n}\n\nexport interface OneTimeUseActionChallengeResponse extends _OneTimeUseActionChallengeResponse {\n    _builtin_original?: _OneTimeUseActionChallengeResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OneTimeUseActionChallengeResponseImpl  implements _OneTimeUseActionChallengeResponse {\n    _builtin_original?: _OneTimeUseActionChallengeResponse = undefined;\n    public challenge: Challenge ;\n    public one_time_use_challenge: OneTimeUseActionChallenge ;\n    public answer_details: Array<OneTimeUseActionChallengeAnswerDetail> ;\n    constructor(base: _OneTimeUseActionChallengeResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'challenge') >= 0) {\n            this.challenge = base.challenge;\n        }\n        if (Object.keys(base).findIndex(key => key === 'one_time_use_challenge') >= 0) {\n            this.one_time_use_challenge = base.one_time_use_challenge;\n        }\n        if (Object.keys(base).findIndex(key => key === 'answer_details') >= 0) {\n            if (base.answer_details) {\n                this.answer_details = base.answer_details.map((original) => newOneTimeUseActionChallengeAnswerDetailImpl(original));\n            } else {\n                this.answer_details = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.answer_details !== undefined) {\n            for (const item of this.answer_details) {\n                if (item !== undefined && (item as OneTimeUseActionChallengeAnswerDetailImpl)._remove_builtin_extensions !== undefined) {\n                    (item as OneTimeUseActionChallengeAnswerDetailImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newOneTimeUseActionChallengeResponseImpl(base: _OneTimeUseActionChallengeResponse): OneTimeUseActionChallengeResponseImpl {\n    return new OneTimeUseActionChallengeResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ChallengeAction, ChallengeAction, ChallengeActionImpl, newChallengeActionImpl } from './challengeAction';\nimport { _ChallengeActor, ChallengeActor, ChallengeActorImpl, newChallengeActorImpl } from './challengeActor';\n\n\n/**\n * Specifies the details of the OneTimeUseActionChallenge. Note that the user_id corresponds to a user who can poll the challenge for completion. This is typically used in some sort of approval workflow where the user needs to wait for someone else to take action. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OneTimeUseActionChallengeSpec { \n    /**\n     * Unique identifier\n     */\n    user_id?: string;\n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n    /**\n     * The list of actions to take when the challenge is approved\n     */\n    approved_actions: Array<ChallengeAction>;\n    /**\n     * The list of actions to take when the challenge is declined\n     */\n    declined_actions: Array<ChallengeAction>;\n    /**\n     * The list of users who can approve or decline the challenge.\n     */\n    actors: Array<ChallengeActor>;\n    /**\n     * For how long the system will accept answers for the challenge. After this time, if the challenge is not in the `challenge_passed` state, it will transition into the `timed_out` state. \n     */\n    timeout_seconds: number;\n}\n\nexport interface OneTimeUseActionChallengeSpec extends _OneTimeUseActionChallengeSpec {\n    _builtin_original?: _OneTimeUseActionChallengeSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OneTimeUseActionChallengeSpecImpl  implements _OneTimeUseActionChallengeSpec {\n    _builtin_original?: _OneTimeUseActionChallengeSpec = undefined;\n    public user_id: string  | undefined ;\n    public org_id: string  | undefined ;\n    public approved_actions: Array<ChallengeAction> ;\n    public declined_actions: Array<ChallengeAction> ;\n    public actors: Array<ChallengeActor> ;\n    public timeout_seconds: number ;\n    constructor(base: _OneTimeUseActionChallengeSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'approved_actions') >= 0) {\n            if (base.approved_actions) {\n                this.approved_actions = base.approved_actions.map((original) => newChallengeActionImpl(original));\n            } else {\n                this.approved_actions = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'declined_actions') >= 0) {\n            if (base.declined_actions) {\n                this.declined_actions = base.declined_actions.map((original) => newChallengeActionImpl(original));\n            } else {\n                this.declined_actions = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'actors') >= 0) {\n            if (base.actors) {\n                this.actors = base.actors.map((original) => newChallengeActorImpl(original));\n            } else {\n                this.actors = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'timeout_seconds') >= 0) {\n            this.timeout_seconds = base.timeout_seconds;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.approved_actions !== undefined) {\n            for (const item of this.approved_actions) {\n                if (item !== undefined && (item as ChallengeActionImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ChallengeActionImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.declined_actions !== undefined) {\n            for (const item of this.declined_actions) {\n                if (item !== undefined && (item as ChallengeActionImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ChallengeActionImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.actors !== undefined) {\n            for (const item of this.actors) {\n                if (item !== undefined && (item as ChallengeActorImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ChallengeActorImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newOneTimeUseActionChallengeSpecImpl(base: _OneTimeUseActionChallengeSpec): OneTimeUseActionChallengeSpecImpl {\n    return new OneTimeUseActionChallengeSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The Operational Status for an Entity. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OperationalStatus { \n    /**\n     * The status can have the following values: - A `good` status means that no action is neccessary - A `down` status indicates that either the AdminStatus for the entity   has is set to `down`, or there is a entity accessibility problem   that should be dealt with as soon as possible. - A `degraded` status indicates that the entity is operational but running   in non-redundant mode. Note that this alarm would only be valid for   a entity that supports redundancy. - A `testing` status indicates the entity the entities AdminStatus has been   placed into `testing`. - A `deleted` status indicates the entity has been deleted. \n     */\n    status: string;\n    /**\n     * The data and time when the status changed in value.\n     */\n    status_change_time?: Date | null;\n    /**\n     * The generation count is incremented periodically by the system as it monitors and verifies the current status. \n     */\n    generation?: number;\n    /**\n     * The data and time when the generation count was last updated.\n     */\n    generation_update_time?: Date | null;\n}\n\nexport interface OperationalStatus extends _OperationalStatus {\n    _builtin_original?: _OperationalStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OperationalStatusImpl  implements _OperationalStatus {\n    _builtin_original?: _OperationalStatus = undefined;\n    public status: string ;\n    public status_change_time: Date | null  | undefined ;\n    public generation: number  | undefined ;\n    public generation_update_time: Date | null  | undefined ;\n    constructor(base: _OperationalStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status_change_time') >= 0) {\n            this.status_change_time = base.status_change_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'generation') >= 0) {\n            this.generation = base.generation;\n        }\n        if (Object.keys(base).findIndex(key => key === 'generation_update_time') >= 0) {\n            this.generation_update_time = base.generation_update_time;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOperationalStatusImpl(base: _OperationalStatus): OperationalStatusImpl {\n    return new OperationalStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Organisation, Organisation, OrganisationImpl, newOrganisationImpl } from './organisation';\n\n\n/**\n * An Organisation fixup is sometimes required if during an org create, components may have failed, such as upstream billing config, etc. This object allows the org to be correct, as well as providing a response as to what was correct. A product label override is always required, since the location of the customer is not known and a suitable product label must be provided.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OrgFixup { \n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n    /**\n     * Override the default product label. \n     */\n    product_label_override: string;\n    /**\n     * Components that were corrected in the fixup call \n     */\n    components_fixed?: Array<string>;\n    org?: Organisation;\n}\n\nexport interface OrgFixup extends _OrgFixup {\n    _builtin_original?: _OrgFixup;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OrgFixupImpl  implements _OrgFixup {\n    _builtin_original?: _OrgFixup = undefined;\n    public org_id: string  | undefined ;\n    public product_label_override: string ;\n    public components_fixed: Array<string>  | undefined ;\n    public org: Organisation  | undefined ;\n    constructor(base: _OrgFixup) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'product_label_override') >= 0) {\n            this.product_label_override = base.product_label_override;\n        }\n        if (Object.keys(base).findIndex(key => key === 'components_fixed') >= 0) {\n            this.components_fixed = base.components_fixed;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org') >= 0) {\n            this.org = base.org;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOrgFixupImpl(base: _OrgFixup): OrgFixupImpl {\n    return new OrgFixupImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * When making a request against a child org as a root org user, a multi-org query is used. This has a scope of \\\"urn:agilicus:token_payload:multiorg:true\\\". This paramater indicates what orgs are to be filled out in the token introspection. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OrgInfo { \n    /**\n     * An exact list of orgs to use for this multi-org query \n     */\n    target_orgs?: Array<string>;\n    /**\n     * If target_orgs above cannot be populated (likely no org hint is found in the originating request), this provides a hint as to which domain is asking for the intropsected token. \n     */\n    target_domain?: string;\n}\n\nexport interface OrgInfo extends _OrgInfo {\n    _builtin_original?: _OrgInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OrgInfoImpl  implements _OrgInfo {\n    _builtin_original?: _OrgInfo = undefined;\n    public target_orgs: Array<string>  | undefined ;\n    public target_domain: string  | undefined ;\n    constructor(base: _OrgInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'target_orgs') >= 0) {\n            this.target_orgs = base.target_orgs;\n        }\n        if (Object.keys(base).findIndex(key => key === 'target_domain') >= 0) {\n            this.target_domain = base.target_domain;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOrgInfoImpl(base: _OrgInfo): OrgInfoImpl {\n    return new OrgInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An Org scoped Patch based on RFC 6902\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OrgScopePatchDocument { \n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n    /**\n     * Organisation Id \n     */\n    org_id: string;\n    /**\n     * A list of PatchDocument \n     */\n    patches: Array<object>;\n}\n\nexport interface OrgScopePatchDocument extends _OrgScopePatchDocument {\n    _builtin_original?: _OrgScopePatchDocument;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OrgScopePatchDocumentImpl  implements _OrgScopePatchDocument {\n    _builtin_original?: _OrgScopePatchDocument = undefined;\n    public readonly updated: Date  | undefined ;\n    public org_id: string ;\n    public patches: Array<object> ;\n    constructor(base: _OrgScopePatchDocument) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'patches') >= 0) {\n            this.patches = base.patches;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOrgScopePatchDocumentImpl(base: _OrgScopePatchDocument): OrgScopePatchDocumentImpl {\n    return new OrgScopePatchDocumentImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserAttributes, UserAttributes, UserAttributesImpl, newUserAttributesImpl } from './userAttributes';\n\n\n/**\n * Specification for OrgUpstreamUserIdentity \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OrgUpstreamUserIdentitySpec { \n    /**\n     * The unique id of the user within the system. This is the user to which this identity is tied. \n     */\n    user_id: string;\n    /**\n     * The unique id of the organisation to which this record applies. \n     */\n    org_id: string;\n    /**\n     * Unique identifier\n     */\n    identity_id: string;\n    /**\n     * The last login time for this user, specific to the upstream identity. \n     */\n    last_login?: Date;\n    user_attributes?: UserAttributes;\n}\n\nexport interface OrgUpstreamUserIdentitySpec extends _OrgUpstreamUserIdentitySpec {\n    _builtin_original?: _OrgUpstreamUserIdentitySpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OrgUpstreamUserIdentitySpecImpl  implements _OrgUpstreamUserIdentitySpec {\n    _builtin_original?: _OrgUpstreamUserIdentitySpec = undefined;\n    public user_id: string ;\n    public org_id: string ;\n    public identity_id: string ;\n    public last_login: Date  | undefined ;\n    public user_attributes: UserAttributes  | undefined ;\n    constructor(base: _OrgUpstreamUserIdentitySpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'identity_id') >= 0) {\n            this.identity_id = base.identity_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_login') >= 0) {\n            this.last_login = base.last_login;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_attributes') >= 0) {\n            this.user_attributes = base.user_attributes;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOrgUpstreamUserIdentitySpecImpl(base: _OrgUpstreamUserIdentitySpec): OrgUpstreamUserIdentitySpecImpl {\n    return new OrgUpstreamUserIdentitySpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UpstreamUserIdentity, UpstreamUserIdentity, UpstreamUserIdentityImpl, newUpstreamUserIdentityImpl } from './upstreamUserIdentity';\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _OrgUpstreamUserIdentityStatus { \n    upstream_user_identity?: UpstreamUserIdentity;\n}\n\nexport interface OrgUpstreamUserIdentityStatus extends _OrgUpstreamUserIdentityStatus {\n    _builtin_original?: _OrgUpstreamUserIdentityStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OrgUpstreamUserIdentityStatusImpl  implements _OrgUpstreamUserIdentityStatus {\n    _builtin_original?: _OrgUpstreamUserIdentityStatus = undefined;\n    public upstream_user_identity: UpstreamUserIdentity  | undefined ;\n    constructor(base: _OrgUpstreamUserIdentityStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'upstream_user_identity') >= 0) {\n            this.upstream_user_identity = base.upstream_user_identity;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOrgUpstreamUserIdentityStatusImpl(base: _OrgUpstreamUserIdentityStatus): OrgUpstreamUserIdentityStatusImpl {\n    return new OrgUpstreamUserIdentityStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Request object for organisation creation\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OrganisationAdmin { \n    /**\n     * Unique identifier\n     */\n    readonly id?: string;\n    /**\n     * connect id issuer\n     */\n    issuer?: string;\n    /**\n     * organisation name\n     */\n    organisation: string;\n    /**\n     * organisation subdomain\n     */\n    subdomain?: string;\n    /**\n     * parent organisation id\n     */\n    parent_id?: string;\n    /**\n     * The billing account id\n     */\n    billing_account_id?: string;\n    /**\n     * Override the default product label. \n     */\n    product_label_override?: string;\n    /**\n     * Unique identifier\n     */\n    region_id?: string;\n    /**\n     * Unique identifier\n     */\n    point_of_presence_id?: string;\n}\n\nexport interface OrganisationAdmin extends _OrganisationAdmin {\n    _builtin_original?: _OrganisationAdmin;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OrganisationAdminImpl  implements _OrganisationAdmin {\n    _builtin_original?: _OrganisationAdmin = undefined;\n    public readonly id: string  | undefined ;\n    public issuer: string  | undefined ;\n    public organisation: string ;\n    public subdomain: string  | undefined ;\n    public parent_id: string  | undefined ;\n    public billing_account_id: string  | undefined ;\n    public product_label_override: string  | undefined ;\n    public region_id: string  | undefined ;\n    public point_of_presence_id: string  | undefined ;\n    constructor(base: _OrganisationAdmin) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer') >= 0) {\n            this.issuer = base.issuer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'organisation') >= 0) {\n            this.organisation = base.organisation;\n        }\n        if (Object.keys(base).findIndex(key => key === 'subdomain') >= 0) {\n            this.subdomain = base.subdomain;\n        }\n        if (Object.keys(base).findIndex(key => key === 'parent_id') >= 0) {\n            this.parent_id = base.parent_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'billing_account_id') >= 0) {\n            this.billing_account_id = base.billing_account_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'product_label_override') >= 0) {\n            this.product_label_override = base.product_label_override;\n        }\n        if (Object.keys(base).findIndex(key => key === 'region_id') >= 0) {\n            this.region_id = base.region_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'point_of_presence_id') >= 0) {\n            this.point_of_presence_id = base.point_of_presence_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOrganisationAdminImpl(base: _OrganisationAdmin): OrganisationAdminImpl {\n    return new OrganisationAdminImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Describes what an organisation is allowed to do:   - What features it can use   - Where it can run things \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OrganisationCapabilities { \n    /**\n     * A set of features that an organisation can use. Each part of the system places requirements on features in order to be used. For example, a region may have a set of tags associated with it. For an organisation to use that cluster, the region requires that the organisation have at least one of those tags. For a feature such as ipsec VPNs, they simply require that the organisation have the ipsec_vpn feature tag. \n     */\n    features: Array<string>;\n}\n\nexport interface OrganisationCapabilities extends _OrganisationCapabilities {\n    _builtin_original?: _OrganisationCapabilities;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OrganisationCapabilitiesImpl  implements _OrganisationCapabilities {\n    _builtin_original?: _OrganisationCapabilities = undefined;\n    public features: Array<string> ;\n    constructor(base: _OrganisationCapabilities) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'features') >= 0) {\n            this.features = base.features;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOrganisationCapabilitiesImpl(base: _OrganisationCapabilities): OrganisationCapabilitiesImpl {\n    return new OrganisationCapabilitiesImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configuration that an organisation owner has under their control. This configuration is used to handle various behaviors of an organisation and how is is used in the system as a whole. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OrganisationOwnerConfig { \n    /**\n     * When true this property removes the visibility that all users in the organisation can see and request all published resources and applications in the users profile (https://profile.<org subdomain>).  By default, this property is false. \n     */\n    disable_user_requests?: boolean;\n}\n\nexport interface OrganisationOwnerConfig extends _OrganisationOwnerConfig {\n    _builtin_original?: _OrganisationOwnerConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OrganisationOwnerConfigImpl  implements _OrganisationOwnerConfig {\n    _builtin_original?: _OrganisationOwnerConfig = undefined;\n    public disable_user_requests: boolean  | undefined ;\n    constructor(base: _OrganisationOwnerConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'disable_user_requests') >= 0) {\n            this.disable_user_requests = base.disable_user_requests;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOrganisationOwnerConfigImpl(base: _OrganisationOwnerConfig): OrganisationOwnerConfigImpl {\n    return new OrganisationOwnerConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Select a state to move into. See OrganisationStateStatus for more information. \n */\nexport type _OrganisationStateSelector = 'active' | 'suspended' | 'disabled' | 'deleted';\nexport type OrganisationStateSelector = _OrganisationStateSelector\n\nexport type OrganisationStateSelectorImpl = OrganisationStateSelector;\nexport const OrganisationStateSelector = {\n    active: 'active' as OrganisationStateSelector,\n    suspended: 'suspended' as OrganisationStateSelector,\n    disabled: 'disabled' as OrganisationStateSelector,\n    deleted: 'deleted' as OrganisationStateSelector\n};\n\nexport function newOrganisationStateSelectorImpl(base: _OrganisationStateSelector): OrganisationStateSelectorImpl {\n    return base;\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The status of an organisation. The state of an organisation controls the availability of resources in an organisation. Depending on the state of the organisation administrative tools, the agilicus federated authentication plaform, as well as any applications provided could be disabled.   * `active`: This organisation is operational and all components are running.   * `suspended`: The applications run by the this organisation are not running, however     the administrative and self serve tools are still accessable. This org can still be managed     and resumed at some point.   * `disabled`: Neither applications nor administrative tools are running for this organisation. This org can only be managed     by agilicus.   * `deleted`: This organisation has been deleted and objects in the Agilicus API may not exist at all. No applications     or administrative tools are running for this organisation. \n */\nexport type _OrganisationStateStatus = 'active' | 'suspended' | 'disabled' | 'deleted';\nexport type OrganisationStateStatus = _OrganisationStateStatus\n\nexport type OrganisationStateStatusImpl = OrganisationStateStatus;\nexport const OrganisationStateStatus = {\n    active: 'active' as OrganisationStateStatus,\n    suspended: 'suspended' as OrganisationStateStatus,\n    disabled: 'disabled' as OrganisationStateStatus,\n    deleted: 'deleted' as OrganisationStateStatus\n};\n\nexport function newOrganisationStateStatusImpl(base: _OrganisationStateStatus): OrganisationStateStatusImpl {\n    return base;\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _OrganisationCapabilities, OrganisationCapabilities, OrganisationCapabilitiesImpl, newOrganisationCapabilitiesImpl } from './organisationCapabilities';\nimport { _OrganisationStateStatus, OrganisationStateStatus, OrganisationStateStatusImpl, newOrganisationStateStatusImpl } from './organisationStateStatus';\n\n\n/**\n * The organisation\\'s status\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OrganisationStatus { \n    /**\n     * An aggregate status indicating that the organisation is fully ready.\n     */\n    all_up?: boolean | null;\n    /**\n     * status of organisation admin portal\n     */\n    admin_up?: boolean | null;\n    /**\n     * status of organisation issuer\n     */\n    issuer_up?: boolean | null;\n    current_state?: OrganisationStateStatus;\n    capabilities?: OrganisationCapabilities;\n}\n\nexport interface OrganisationStatus extends _OrganisationStatus {\n    _builtin_original?: _OrganisationStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OrganisationStatusImpl  implements _OrganisationStatus {\n    _builtin_original?: _OrganisationStatus = undefined;\n    public all_up: boolean | null  | undefined ;\n    public admin_up: boolean | null  | undefined ;\n    public issuer_up: boolean | null  | undefined ;\n    public current_state: OrganisationStateStatus  | undefined ;\n    public capabilities: OrganisationCapabilities  | undefined ;\n    constructor(base: _OrganisationStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'all_up') >= 0) {\n            this.all_up = base.all_up;\n        }\n        if (Object.keys(base).findIndex(key => key === 'admin_up') >= 0) {\n            this.admin_up = base.admin_up;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer_up') >= 0) {\n            this.issuer_up = base.issuer_up;\n        }\n        if (Object.keys(base).findIndex(key => key === 'current_state') >= 0) {\n            this.current_state = base.current_state;\n        }\n        if (Object.keys(base).findIndex(key => key === 'capabilities') >= 0) {\n            this.capabilities = base.capabilities;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newOrganisationStatusImpl(base: _OrganisationStatus): OrganisationStatusImpl {\n    return new OrganisationStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LicenseConstraint, LicenseConstraint, LicenseConstraintImpl, newLicenseConstraintImpl } from './licenseConstraint';\n\n\n/**\n * Organisation System Options are are properties of the organisation controlled by the system and are not configurable by end user.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _OrganisationSystemOptions { \n    /**\n     * Unique identifier\n     */\n    readonly id?: string;\n    /**\n     * A list of features to apply to new subscriptions that are created from this organisation.\n     */\n    new_subscription_feature_overrides?: Array<string> | null;\n    /**\n     * A list of domains whose subdomains are allowed to build fully qualified domain names for resources in this organisation \n     */\n    allowed_domains?: Array<string>;\n    /**\n     * Overrides for constraints applied to this org\\'s license. Only use in exceptional circumstances. \n     */\n    license_constraints?: Array<LicenseConstraint>;\n    /**\n     * A dictionary of values to pass in to constraint evaluation. These values will be provided to the constraints via the \\'input_vars\\' variable. Constraint variables are merged using the same priority as the constraints themselves. \n     */\n    constraint_variables?: { [key: string]: object | undefined; };\n}\n\nexport interface OrganisationSystemOptions extends _OrganisationSystemOptions {\n    _builtin_original?: _OrganisationSystemOptions;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class OrganisationSystemOptionsImpl  implements _OrganisationSystemOptions {\n    _builtin_original?: _OrganisationSystemOptions = undefined;\n    public readonly id: string  | undefined ;\n    public new_subscription_feature_overrides: Array<string> | null  | undefined ;\n    public allowed_domains: Array<string>  | undefined ;\n    public license_constraints: Array<LicenseConstraint>  | undefined ;\n    public constraint_variables: { [key: string]: object | undefined; }  | undefined ;\n    constructor(base: _OrganisationSystemOptions) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'new_subscription_feature_overrides') >= 0) {\n            this.new_subscription_feature_overrides = base.new_subscription_feature_overrides;\n        }\n        if (Object.keys(base).findIndex(key => key === 'allowed_domains') >= 0) {\n            this.allowed_domains = base.allowed_domains;\n        }\n        if (Object.keys(base).findIndex(key => key === 'license_constraints') >= 0) {\n            if (base.license_constraints) {\n                this.license_constraints = base.license_constraints.map((original) => newLicenseConstraintImpl(original));\n            } else {\n                this.license_constraints = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'constraint_variables') >= 0) {\n            this.constraint_variables = base.constraint_variables;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.license_constraints !== undefined) {\n            for (const item of this.license_constraints) {\n                if (item !== undefined && (item as LicenseConstraintImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LicenseConstraintImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newOrganisationSystemOptionsImpl(base: _OrganisationSystemOptions): OrganisationSystemOptionsImpl {\n    return new OrganisationSystemOptionsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The information about the current page fetch in a pagination query. Use this to fetch the next or previous page. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PageInfo { \n    /**\n     * The list of items to page on when fetching the next page. These should be copied verbatim into the next query, since the API may have added an extra value to the keys in order to tie-break. \n     */\n    page_on: Array<string>;\n    /**\n     * The list of values defining the next page to fetch. These should be copied verbatim into the next query, since the API may have added an extra value to the keys in order to tie-break. \n     */\n    page_at_key: Array<string>;\n    /**\n     * The list of values defining the next page to fetch. These should be copied verbatim into the next query, since the API may have added an extra value to the keys in order to tie-break. \n     */\n    previous_key?: Array<string>;\n}\n\nexport interface PageInfo extends _PageInfo {\n    _builtin_original?: _PageInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PageInfoImpl  implements _PageInfo {\n    _builtin_original?: _PageInfo = undefined;\n    public page_on: Array<string> ;\n    public page_at_key: Array<string> ;\n    public previous_key: Array<string>  | undefined ;\n    constructor(base: _PageInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'page_on') >= 0) {\n            this.page_on = base.page_on;\n        }\n        if (Object.keys(base).findIndex(key => key === 'page_at_key') >= 0) {\n            this.page_at_key = base.page_at_key;\n        }\n        if (Object.keys(base).findIndex(key => key === 'previous_key') >= 0) {\n            this.previous_key = base.previous_key;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newPageInfoImpl(base: _PageInfo): PageInfoImpl {\n    return new PageInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Controls a cross domain policy used to indicate to clients of resources such as Flash or PDF whether they can load content from your site. Corresponds to the X-Permitted-Cross-Domain-Policies header. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PermittedCrossDomainPoliciesSettings { \n    /**\n     * Whether to apply the PermittedCrossDomainPoliciesSettings. If false, no settings will be applied. Settings applied by the application itself will take effect. \n     */\n    enabled: boolean;\n    /**\n     * Controls the value of the X-Permitted-Cross-Domain-Policies header. - `clear`: Removes the X-Permitted-Cross-Domain-Policies header from the server\\'s response if present. - `override`: Use the value specified in the override field. If it is not present, the   header will be set to an empty string. \n     */\n    mode: PermittedCrossDomainPoliciesSettings.ModeEnum;\n    /**\n     * Set a specific value for the X-Permitted-Cross-Domain-Policies header.\n     */\n    override?: string | null;\n}\n\nexport interface PermittedCrossDomainPoliciesSettings extends _PermittedCrossDomainPoliciesSettings {\n    _builtin_original?: _PermittedCrossDomainPoliciesSettings;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PermittedCrossDomainPoliciesSettingsImpl  implements _PermittedCrossDomainPoliciesSettings {\n    _builtin_original?: _PermittedCrossDomainPoliciesSettings = undefined;\n    public enabled: boolean ;\n    public mode: PermittedCrossDomainPoliciesSettings.ModeEnum ;\n    public override: string | null  | undefined ;\n    constructor(base: _PermittedCrossDomainPoliciesSettings) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mode') >= 0) {\n            this.mode = base.mode;\n        }\n        if (Object.keys(base).findIndex(key => key === 'override') >= 0) {\n            this.override = base.override;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace PermittedCrossDomainPoliciesSettings {\n    export type ModeEnum = 'clear' | 'override';\n    export const ModeEnum = {\n        clear: 'clear' as ModeEnum,\n        override: 'override' as ModeEnum\n    };\n}\n\n\nexport function newPermittedCrossDomainPoliciesSettingsImpl(base: _PermittedCrossDomainPoliciesSettings): PermittedCrossDomainPoliciesSettingsImpl {\n    return new PermittedCrossDomainPoliciesSettingsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Describes how a point of presence may be accessed over the Internet. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PointOfPresenceRouting { \n    /**\n     * The domains that address this point of presence. Use these when configuring external systems such as a DNS CNAME or a firewall. \n     */\n    domains: Array<string>;\n    /**\n     * Organisation subdomains supported by this region\n     */\n    org_domains?: Array<string>;\n    /**\n     * If true, allow this PointOfPresence to serve RoutingRequests.\n     */\n    requests_enabled?: boolean;\n    /**\n     * If true, this region is public and is visible to external systems.\n     */\n    _public?: boolean;\n    /**\n     * If true, routing is restricted by user_id (see permitted_user_ids)\n     */\n    restrict_by_user_id?: boolean;\n    /**\n     * A list of user_ids that are permitted for using this region on a routing request. The omission of this property (not set) allows any user_id. \n     */\n    permitted_user_ids?: Array<string>;\n    /**\n     * A Common Expression Library (CES) used to evaluate if a routing request should utilize this Region  The following objects are available to the ces program:      geoip:       iso_code:       city:       country:       currency:     token_info:       email:       sub:       org:  Example ces that evaluates to true if subscriber ip address is found in USA:      geoip.iso_code == \\'US\\' \n     */\n    ces?: string;\n}\n\nexport interface PointOfPresenceRouting extends _PointOfPresenceRouting {\n    _builtin_original?: _PointOfPresenceRouting;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PointOfPresenceRoutingImpl  implements _PointOfPresenceRouting {\n    _builtin_original?: _PointOfPresenceRouting = undefined;\n    public domains: Array<string> ;\n    public org_domains: Array<string>  | undefined ;\n    public requests_enabled: boolean  | undefined ;\n    public _public: boolean  | undefined ;\n    public restrict_by_user_id: boolean  | undefined ;\n    public permitted_user_ids: Array<string>  | undefined ;\n    public ces: string  | undefined ;\n    constructor(base: _PointOfPresenceRouting) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'domains') >= 0) {\n            this.domains = base.domains;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_domains') >= 0) {\n            this.org_domains = base.org_domains;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requests_enabled') >= 0) {\n            this.requests_enabled = base.requests_enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === '_public') >= 0) {\n            this._public = base._public;\n        }\n        if (Object.keys(base).findIndex(key => key === 'restrict_by_user_id') >= 0) {\n            this.restrict_by_user_id = base.restrict_by_user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'permitted_user_ids') >= 0) {\n            this.permitted_user_ids = base.permitted_user_ids;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ces') >= 0) {\n            this.ces = base.ces;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newPointOfPresenceRoutingImpl(base: _PointOfPresenceRouting): PointOfPresenceRoutingImpl {\n    return new PointOfPresenceRoutingImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PointOfPresenceRouting, PointOfPresenceRouting, PointOfPresenceRoutingImpl, newPointOfPresenceRoutingImpl } from './pointOfPresenceRouting';\n\n\n/**\n * The PointOfPresenceSpec describes the properties of a point of presence.  A PointOfPresence can specify a cluster_pool, which specifies which clusters would provide service to its routing. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PointOfPresenceSpec { \n    /**\n     * The name of a tag. Tag names are case sensitive.\n     */\n    name: string;\n    /**\n     * Properties of the point of presence such as different aspects of its geographical location. These can be used to filter point of presences based on desired properties. \n     */\n    tags: Array<string>;\n    routing: PointOfPresenceRouting;\n    /**\n     * Designates a particular cluster in the PointOfPresence as a master.  This property is normally not required when there is a single cluster_id specified in cluster_ids.  This guid must also exist inside cluster_ids. \n     */\n    master_cluster_id?: string;\n    /**\n     * the configured cluster ids that are associated to this PointOfPresence \n     */\n    cluster_ids?: Array<string>;\n    /**\n     * Organisation subdomains supported by this PointOfPresence\n     */\n    org_domains?: Array<string>;\n}\n\nexport interface PointOfPresenceSpec extends _PointOfPresenceSpec {\n    _builtin_original?: _PointOfPresenceSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PointOfPresenceSpecImpl  implements _PointOfPresenceSpec {\n    _builtin_original?: _PointOfPresenceSpec = undefined;\n    public name: string ;\n    public tags: Array<string> ;\n    public routing: PointOfPresenceRouting ;\n    public master_cluster_id: string  | undefined ;\n    public cluster_ids: Array<string>  | undefined ;\n    public org_domains: Array<string>  | undefined ;\n    constructor(base: _PointOfPresenceSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'tags') >= 0) {\n            this.tags = base.tags;\n        }\n        if (Object.keys(base).findIndex(key => key === 'routing') >= 0) {\n            this.routing = base.routing;\n        }\n        if (Object.keys(base).findIndex(key => key === 'master_cluster_id') >= 0) {\n            this.master_cluster_id = base.master_cluster_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'cluster_ids') >= 0) {\n            this.cluster_ids = base.cluster_ids;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_domains') >= 0) {\n            this.org_domains = base.org_domains;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newPointOfPresenceSpecImpl(base: _PointOfPresenceSpec): PointOfPresenceSpecImpl {\n    return new PointOfPresenceSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Cluster, Cluster, ClusterImpl, newClusterImpl } from './cluster';\n\n\n/**\n * The PointOfPresenceStatus describes the status properties of a point of presence. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PointOfPresenceStatus { \n    master_cluster?: Cluster;\n    clusters?: Array<Cluster>;\n}\n\nexport interface PointOfPresenceStatus extends _PointOfPresenceStatus {\n    _builtin_original?: _PointOfPresenceStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PointOfPresenceStatusImpl  implements _PointOfPresenceStatus {\n    _builtin_original?: _PointOfPresenceStatus = undefined;\n    public master_cluster: Cluster  | undefined ;\n    public clusters: Array<Cluster>  | undefined ;\n    constructor(base: _PointOfPresenceStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'master_cluster') >= 0) {\n            this.master_cluster = base.master_cluster;\n        }\n        if (Object.keys(base).findIndex(key => key === 'clusters') >= 0) {\n            if (base.clusters) {\n                this.clusters = base.clusters.map((original) => newClusterImpl(original));\n            } else {\n                this.clusters = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.clusters !== undefined) {\n            for (const item of this.clusters) {\n                if (item !== undefined && (item as ClusterImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ClusterImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newPointOfPresenceStatusImpl(base: _PointOfPresenceStatus): PointOfPresenceStatusImpl {\n    return new PointOfPresenceStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A condition to be evaluated by the policy engine\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PolicyCondition { \n    /**\n     * The type of this condition. The type determines how the value will be evaluated. This parameter is case sensitive.\n     */\n    condition_type: PolicyCondition.ConditionTypeEnum;\n    /**\n     * This field is deprecated. Whether to invert the condition (ie the not operator). If the condition is `a == b` inverting the condition results in `not (a == b)`\n     */\n    inverted?: boolean;\n    /**\n     * Whether the input to the condition is in a list. The semantics of the condition when this flag is set is to compare every item in the list to the `value` using the `operator`. The condition is satisfied if any item in the list evaluates to true \n     */\n    input_is_list?: boolean;\n    /**\n     * A JSON string representing the value to compare against. The structure of the comparision and type of the value depends on the condition type. A comparision is done to determine the result of the condition (either `true` or `false`)\n     */\n    value: string;\n    /**\n     * The operator used to evaluate this condition. The operator field only applies when the condition type is type_object_attribute. The other types have implied operators.\n     */\n    operator: PolicyCondition.OperatorEnum;\n    /**\n     * The object path to a field to use as input to the policy condition. This field only applies when the condition type is type_object_attribute. The supported objects are currently `users`, and `clients`. \n     */\n    field?: string;\n    /**\n     * Creation time\n     */\n    readonly created?: Date;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n}\n\nexport interface PolicyCondition extends _PolicyCondition {\n    _builtin_original?: _PolicyCondition;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PolicyConditionImpl  implements _PolicyCondition {\n    _builtin_original?: _PolicyCondition = undefined;\n    public condition_type: PolicyCondition.ConditionTypeEnum ;\n    public inverted: boolean  | undefined ;\n    public input_is_list: boolean  | undefined ;\n    public value: string ;\n    public operator: PolicyCondition.OperatorEnum ;\n    public field: string  | undefined ;\n    public readonly created: Date  | undefined ;\n    public readonly updated: Date  | undefined ;\n    constructor(base: _PolicyCondition) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'condition_type') >= 0) {\n            this.condition_type = base.condition_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'inverted') >= 0) {\n            this.inverted = base.inverted;\n        }\n        if (Object.keys(base).findIndex(key => key === 'input_is_list') >= 0) {\n            this.input_is_list = base.input_is_list;\n        }\n        if (Object.keys(base).findIndex(key => key === 'value') >= 0) {\n            this.value = base.value;\n        }\n        if (Object.keys(base).findIndex(key => key === 'operator') >= 0) {\n            this.operator = base.operator;\n        }\n        if (Object.keys(base).findIndex(key => key === 'field') >= 0) {\n            this.field = base.field;\n        }\n        if (Object.keys(base).findIndex(key => key === 'created') >= 0) {\n            this.created = base.created;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace PolicyCondition {\n    export type ConditionTypeEnum = 'type_client_id_list' | 'type_org_id_list' | 'type_user_id_list' | 'type_upstream_idp_list' | 'type_ip_in_cidr_list' | 'type_last_successful_mfa' | 'type_object_attribute' | 'type_user_has_enrolled_multifactor_method';\n    export const ConditionTypeEnum = {\n        client_id_list: 'type_client_id_list' as ConditionTypeEnum,\n        org_id_list: 'type_org_id_list' as ConditionTypeEnum,\n        user_id_list: 'type_user_id_list' as ConditionTypeEnum,\n        upstream_idp_list: 'type_upstream_idp_list' as ConditionTypeEnum,\n        ip_in_cidr_list: 'type_ip_in_cidr_list' as ConditionTypeEnum,\n        last_successful_mfa: 'type_last_successful_mfa' as ConditionTypeEnum,\n        object_attribute: 'type_object_attribute' as ConditionTypeEnum,\n        user_has_enrolled_multifactor_method: 'type_user_has_enrolled_multifactor_method' as ConditionTypeEnum\n    };\n    export type OperatorEnum = 'equals' | 'not_equals' | 'greater_than' | 'less_than' | 'in' | 'not_in';\n    export const OperatorEnum = {\n        equals: 'equals' as OperatorEnum,\n        not_equals: 'not_equals' as OperatorEnum,\n        greater_than: 'greater_than' as OperatorEnum,\n        less_than: 'less_than' as OperatorEnum,\n        in: 'in' as OperatorEnum,\n        not_in: 'not_in' as OperatorEnum\n    };\n}\n\n\nexport function newPolicyConditionImpl(base: _PolicyCondition): PolicyConditionImpl {\n    return new PolicyConditionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _AuthzBundle, AuthzBundle, AuthzBundleImpl, newAuthzBundleImpl } from './authzBundle';\n\n\n/**\n * A PolicyConfigAuthzBundle bundle contains various components for an organisation that drives various authentication and authorization rules as well as necessary backend data sources. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PolicyConfigAuthzBundle { \n    backend_data?: AuthzBundle;\n}\n\nexport interface PolicyConfigAuthzBundle extends _PolicyConfigAuthzBundle {\n    _builtin_original?: _PolicyConfigAuthzBundle;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PolicyConfigAuthzBundleImpl  implements _PolicyConfigAuthzBundle {\n    _builtin_original?: _PolicyConfigAuthzBundle = undefined;\n    public backend_data: AuthzBundle  | undefined ;\n    constructor(base: _PolicyConfigAuthzBundle) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'backend_data') >= 0) {\n            this.backend_data = base.backend_data;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newPolicyConfigAuthzBundleImpl(base: _PolicyConfigAuthzBundle): PolicyConfigAuthzBundleImpl {\n    return new PolicyConfigAuthzBundleImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ConnectorBaseInfo, ConnectorBaseInfo, ConnectorBaseInfoImpl, newConnectorBaseInfoImpl } from './connectorBaseInfo';\nimport { _ResourceURLHostInfo, ResourceURLHostInfo, ResourceURLHostInfoImpl, newResourceURLHostInfoImpl } from './resourceURLHostInfo';\n\n\n/**\n * A PolicyConfigResourceURL bundle contains information about the resources provided by Agilicus, such as the organisation which administers it, from the perspective of the routing layer of the system. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PolicyConfigResourceURLBundle { \n    /**\n     * A map of Host to the info associated with that host. The index is always lowercase. \n     */\n    host_info: { [key: string]: ResourceURLHostInfo | undefined; };\n    /**\n     * A map of connector id to the basic info associated with that connector. This is useful for discovering basic properties of a connector like to which organisation is belongs. \n     */\n    connector_info?: { [key: string]: ConnectorBaseInfo | undefined; };\n}\n\nexport interface PolicyConfigResourceURLBundle extends _PolicyConfigResourceURLBundle {\n    _builtin_original?: _PolicyConfigResourceURLBundle;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PolicyConfigResourceURLBundleImpl  implements _PolicyConfigResourceURLBundle {\n    _builtin_original?: _PolicyConfigResourceURLBundle = undefined;\n    public host_info: { [key: string]: ResourceURLHostInfo | undefined; } ;\n    public connector_info: { [key: string]: ConnectorBaseInfo | undefined; }  | undefined ;\n    constructor(base: _PolicyConfigResourceURLBundle) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'host_info') >= 0) {\n            this.host_info = base.host_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_info') >= 0) {\n            this.connector_info = base.connector_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newPolicyConfigResourceURLBundleImpl(base: _PolicyConfigResourceURLBundle): PolicyConfigResourceURLBundleImpl {\n    return new PolicyConfigResourceURLBundleImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _MetadataWithId, MetadataWithId, MetadataWithIdImpl, newMetadataWithIdImpl } from './metadataWithId';\nimport { _PolicyGroupSpec, PolicyGroupSpec, PolicyGroupSpecImpl, newPolicyGroupSpecImpl } from './policyGroupSpec';\n\n\n/**\n * A policy group describes a collection of policy rules\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PolicyGroup { \n    metadata?: MetadataWithId;\n    spec: PolicyGroupSpec;\n}\n\nexport interface PolicyGroup extends _PolicyGroup {\n    _builtin_original?: _PolicyGroup;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PolicyGroupImpl  implements _PolicyGroup {\n    _builtin_original?: _PolicyGroup = undefined;\n    public metadata: MetadataWithId  | undefined ;\n    public spec: PolicyGroupSpec ;\n    constructor(base: _PolicyGroup) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newPolicyGroupImpl(base: _PolicyGroup): PolicyGroupImpl {\n    return new PolicyGroupImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A policy group consists of a list of rules.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PolicyGroupSpec { \n    /**\n     * The name of the group\n     */\n    name?: string;\n    /**\n     * A list of PolicyRule ids that make up the policy group. The rules are evaluated based on the priority of their action. The ordering is as follows allow_login, deny_login, dont_mfa, authenticate, do_mfa The first rule that matches will take that rules action. \n     */\n    rule_ids: Array<string>;\n}\n\nexport interface PolicyGroupSpec extends _PolicyGroupSpec {\n    _builtin_original?: _PolicyGroupSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PolicyGroupSpecImpl  implements _PolicyGroupSpec {\n    _builtin_original?: _PolicyGroupSpec = undefined;\n    public name: string  | undefined ;\n    public rule_ids: Array<string> ;\n    constructor(base: _PolicyGroupSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'rule_ids') >= 0) {\n            this.rule_ids = base.rule_ids;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newPolicyGroupSpecImpl(base: _PolicyGroupSpec): PolicyGroupSpecImpl {\n    return new PolicyGroupSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A reference from a policy to an issuer which uses it. The issuer_id is the id of the issuer, and the org_id is the id of the org for the issuer. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PolicyIssuerRef { \n    /**\n     * Unique identifier\n     */\n    issuer_id: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n}\n\nexport interface PolicyIssuerRef extends _PolicyIssuerRef {\n    _builtin_original?: _PolicyIssuerRef;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PolicyIssuerRefImpl  implements _PolicyIssuerRef {\n    _builtin_original?: _PolicyIssuerRef = undefined;\n    public issuer_id: string ;\n    public org_id: string ;\n    constructor(base: _PolicyIssuerRef) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'issuer_id') >= 0) {\n            this.issuer_id = base.issuer_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newPolicyIssuerRefImpl(base: _PolicyIssuerRef): PolicyIssuerRefImpl {\n    return new PolicyIssuerRefImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PolicyCondition, PolicyCondition, PolicyConditionImpl, newPolicyConditionImpl } from './policyCondition';\n\n\n/**\n * A rule to be evaluated by the policy engine.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PolicyRuleSpec { \n    /**\n     * A descriptive name of the policy rule to help administrators identify each rule. A name should describe the business logic the rule is satisfying.\n     */\n    name?: string;\n    /**\n     * The action to take if the conditions are evaluated to true. Actions are case sensitive.\n     */\n    action: string;\n    /**\n     * This field is deprecated. The priority of this rule relative to other rules. Rules of a higher priority will be evaluated first and if the condition evaluates to true the action will be taken. 1 is the highest priority.\n     */\n    priority?: number;\n    /**\n     * The org id corresponding to the issuer whose policy you are updating\n     */\n    org_id?: string;\n    /**\n     * An array mapping a condition type to a condition.\n     */\n    conditions: Array<PolicyCondition>;\n}\n\nexport interface PolicyRuleSpec extends _PolicyRuleSpec {\n    _builtin_original?: _PolicyRuleSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PolicyRuleSpecImpl  implements _PolicyRuleSpec {\n    _builtin_original?: _PolicyRuleSpec = undefined;\n    public name: string  | undefined ;\n    public action: string ;\n    public priority: number  | undefined ;\n    public org_id: string  | undefined ;\n    public conditions: Array<PolicyCondition> ;\n    constructor(base: _PolicyRuleSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'action') >= 0) {\n            this.action = base.action;\n        }\n        if (Object.keys(base).findIndex(key => key === 'priority') >= 0) {\n            this.priority = base.priority;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'conditions') >= 0) {\n            if (base.conditions) {\n                this.conditions = base.conditions.map((original) => newPolicyConditionImpl(original));\n            } else {\n                this.conditions = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.conditions !== undefined) {\n            for (const item of this.conditions) {\n                if (item !== undefined && (item as PolicyConditionImpl)._remove_builtin_extensions !== undefined) {\n                    (item as PolicyConditionImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newPolicyRuleSpecImpl(base: _PolicyRuleSpec): PolicyRuleSpecImpl {\n    return new PolicyRuleSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PolicyRule, PolicyRule, PolicyRuleImpl, newPolicyRuleImpl } from './policyRule';\nimport { _PolicyGroup, PolicyGroup, PolicyGroupImpl, newPolicyGroupImpl } from './policyGroup';\n\n\n/**\n * The definition of the policy.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PolicySpec { \n    /**\n     * The name of the policy so that it can be identifiable when applied to organizations or clients\n     */\n    name?: string;\n    /**\n     * The issuer that this policy applies to\n     */\n    issuer_id: string | null;\n    /**\n     * The org id corresponding to the issuer whose policy you are updating\n     */\n    org_id?: string;\n    /**\n     * A list of supported MFA methods. An empty list implies that no MFA methods are acceptable\n     */\n    supported_mfa_methods: Array<string>;\n    /**\n     * The action to take if none of the conditions evaluate to true. Actions are case sensitive.\n     */\n    default_action: PolicySpec.DefaultActionEnum;\n    /**\n     * The list of rules defining the policy. A rule consists of conditions, actions, and a priority\n     */\n    readonly rules?: Array<PolicyRule>;\n    /**\n     * A list of policy groups ordered by priority. The first item in the list represents the group with the highest priority. A policy group consists of a list of rules. All rules in a group of higher priority will have higher precedence than any rule in a group of lower priority. \n     */\n    policy_groups?: Array<PolicyGroup>;\n    /**\n     * An identifier for the policy this policy was based on.\n     */\n    source?: string;\n}\n\nexport interface PolicySpec extends _PolicySpec {\n    _builtin_original?: _PolicySpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PolicySpecImpl  implements _PolicySpec {\n    _builtin_original?: _PolicySpec = undefined;\n    public name: string  | undefined ;\n    public issuer_id: string | null ;\n    public org_id: string  | undefined ;\n    public supported_mfa_methods: Array<string> ;\n    public default_action: PolicySpec.DefaultActionEnum ;\n    public readonly rules: Array<PolicyRule>  | undefined ;\n    public policy_groups: Array<PolicyGroup>  | undefined ;\n    public source: string  | undefined ;\n    constructor(base: _PolicySpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer_id') >= 0) {\n            this.issuer_id = base.issuer_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'supported_mfa_methods') >= 0) {\n            this.supported_mfa_methods = base.supported_mfa_methods;\n        }\n        if (Object.keys(base).findIndex(key => key === 'default_action') >= 0) {\n            this.default_action = base.default_action;\n        }\n        if (Object.keys(base).findIndex(key => key === 'rules') >= 0) {\n            if (base.rules) {\n                this.rules = base.rules.map((original) => newPolicyRuleImpl(original));\n            } else {\n                this.rules = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'policy_groups') >= 0) {\n            if (base.policy_groups) {\n                this.policy_groups = base.policy_groups.map((original) => newPolicyGroupImpl(original));\n            } else {\n                this.policy_groups = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'source') >= 0) {\n            this.source = base.source;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.rules !== undefined) {\n            for (const item of this.rules) {\n                if (item !== undefined && (item as PolicyRuleImpl)._remove_builtin_extensions !== undefined) {\n                    (item as PolicyRuleImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.policy_groups !== undefined) {\n            for (const item of this.policy_groups) {\n                if (item !== undefined && (item as PolicyGroupImpl)._remove_builtin_extensions !== undefined) {\n                    (item as PolicyGroupImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace PolicySpec {\n    export type DefaultActionEnum = 'do_mfa' | 'dont_mfa' | 'deny_login' | 'allow_login' | 'authenticate';\n    export const DefaultActionEnum = {\n        do_mfa: 'do_mfa' as DefaultActionEnum,\n        dont_mfa: 'dont_mfa' as DefaultActionEnum,\n        deny_login: 'deny_login' as DefaultActionEnum,\n        allow_login: 'allow_login' as DefaultActionEnum,\n        authenticate: 'authenticate' as DefaultActionEnum\n    };\n}\n\n\nexport function newPolicySpecImpl(base: _PolicySpec): PolicySpecImpl {\n    return new PolicySpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PolicyIssuerRef, PolicyIssuerRef, PolicyIssuerRefImpl, newPolicyIssuerRefImpl } from './policyIssuerRef';\n\n\n/**\n * A policy status describes the read-only, inferred properties of the policy\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PolicyStatus { \n    /**\n     * Issuers which use this policy\n     */\n    associated_issuers?: Array<PolicyIssuerRef>;\n}\n\nexport interface PolicyStatus extends _PolicyStatus {\n    _builtin_original?: _PolicyStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PolicyStatusImpl  implements _PolicyStatus {\n    _builtin_original?: _PolicyStatus = undefined;\n    public associated_issuers: Array<PolicyIssuerRef>  | undefined ;\n    constructor(base: _PolicyStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'associated_issuers') >= 0) {\n            if (base.associated_issuers) {\n                this.associated_issuers = base.associated_issuers.map((original) => newPolicyIssuerRefImpl(original));\n            } else {\n                this.associated_issuers = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.associated_issuers !== undefined) {\n            for (const item of this.associated_issuers) {\n                if (item !== undefined && (item as PolicyIssuerRefImpl)._remove_builtin_extensions !== undefined) {\n                    (item as PolicyIssuerRefImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newPolicyStatusImpl(base: _PolicyStatus): PolicyStatusImpl {\n    return new PolicyStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Restricts access to resources based on the source from which a request originates. If invert is true, the policy will match requests whose ip does not match one of the items in source_subnets and iso_country_codes. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SourceInfoPolicyTemplate { \n    /**\n     * Restrict the challenge to accesses for resources with one of these labels. \n     */\n    labels: Array<string>;\n    /**\n     * The descriminator for the PolicyTemplate. Set this to `source_info`\n     */\n    template_type: string;\n    /**\n     * A list of IP subnets. If the request comes from one of them, it will be allowed or denied based on the provided configuration. \n     */\n    source_subnets: Array<string>;\n    /**\n     * A list of ISO 3166-1 alpha-2 country codes. If the request comes from one of them, it will be allowed or denied based on the provided configuration. \n     */\n    iso_country_codes: Array<string>;\n    /**\n     * If set, will emit a log message with this avalue on match\n     */\n    log_message?: string;\n    /**\n     * If set to true, will match the request if the source ip is not in the source_subnets list, and the country code is not in the iso_country_codes list. \n     */\n    invert: boolean;\n    /**\n     * If set to allow, the request will be allowed if it matches. If set to deny, it will be denied. \n     */\n    action: SourceInfoPolicyTemplate.ActionEnum;\n}\n\nexport interface SourceInfoPolicyTemplate extends _SourceInfoPolicyTemplate {\n    _builtin_original?: _SourceInfoPolicyTemplate;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SourceInfoPolicyTemplateImpl  implements _SourceInfoPolicyTemplate {\n    _builtin_original?: _SourceInfoPolicyTemplate = undefined;\n    public labels: Array<string> ;\n    public template_type: string ;\n    public source_subnets: Array<string> ;\n    public iso_country_codes: Array<string> ;\n    public log_message: string  | undefined ;\n    public invert: boolean ;\n    public action: SourceInfoPolicyTemplate.ActionEnum ;\n    constructor(base: _SourceInfoPolicyTemplate) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'labels') >= 0) {\n            this.labels = base.labels;\n        }\n        if (Object.keys(base).findIndex(key => key === 'template_type') >= 0) {\n            this.template_type = base.template_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'source_subnets') >= 0) {\n            this.source_subnets = base.source_subnets;\n        }\n        if (Object.keys(base).findIndex(key => key === 'iso_country_codes') >= 0) {\n            this.iso_country_codes = base.iso_country_codes;\n        }\n        if (Object.keys(base).findIndex(key => key === 'log_message') >= 0) {\n            this.log_message = base.log_message;\n        }\n        if (Object.keys(base).findIndex(key => key === 'invert') >= 0) {\n            this.invert = base.invert;\n        }\n        if (Object.keys(base).findIndex(key => key === 'action') >= 0) {\n            this.action = base.action;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace SourceInfoPolicyTemplate {\n    export type ActionEnum = 'allow' | 'deny';\n    export const ActionEnum = {\n        allow: 'allow' as ActionEnum,\n        deny: 'deny' as ActionEnum\n    };\n}\n\n\nexport function newSourceInfoPolicyTemplateImpl(base: _SourceInfoPolicyTemplate): SourceInfoPolicyTemplateImpl {\n    return new SourceInfoPolicyTemplateImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _SimpleResourcePolicyTemplateStructureNode, SimpleResourcePolicyTemplateStructureNode, SimpleResourcePolicyTemplateStructureNodeImpl, newSimpleResourcePolicyTemplateStructureNodeImpl } from './simpleResourcePolicyTemplateStructureNode';\n\n\n/**\n * Associates the tree (made of Nodes) with metadata like a name. The name uniquely identifies the SimpleResourcePolicyTemplateStructure within the template. The root_node is the root of the tree. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SimpleResourcePolicyTemplateStructure { \n    /**\n     * The name of component of the rule system \n     */\n    name: string;\n    root_node: SimpleResourcePolicyTemplateStructureNode;\n}\n\nexport interface SimpleResourcePolicyTemplateStructure extends _SimpleResourcePolicyTemplateStructure {\n    _builtin_original?: _SimpleResourcePolicyTemplateStructure;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SimpleResourcePolicyTemplateStructureImpl  implements _SimpleResourcePolicyTemplateStructure {\n    _builtin_original?: _SimpleResourcePolicyTemplateStructure = undefined;\n    public name: string ;\n    public root_node: SimpleResourcePolicyTemplateStructureNode ;\n    constructor(base: _SimpleResourcePolicyTemplateStructure) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'root_node') >= 0) {\n            this.root_node = base.root_node;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSimpleResourcePolicyTemplateStructureImpl(base: _SimpleResourcePolicyTemplateStructure): SimpleResourcePolicyTemplateStructureImpl {\n    return new SimpleResourcePolicyTemplateStructureImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An action to take when a rule evaluates to true. The `action` field determine which action is taken. Other fields may influence the behaviour of the action. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RuleAction { \n    /**\n     * The name of the action to take. This controls the behaviour. - `allow`: allow the request - `deny`: deny the request - `redirect`: redirect the request. This action causes the rules engine to immediately respond to the request with an HTTP redirect pointing to path. The request is not proxied. - `log`: log the request - `none`: do nothing. This is useful for parent rules which essentially annotate sub-rules with   shared conditions. - `revocation_check`: checks whether the request and response are valid according to revocation protocols   such as CRL or OCSP. - `mfa`: require mfa \n     */\n    action: RuleAction.ActionEnum;\n    /**\n     * The message to log. If multiple actions output a log, the messages will be combined using a \\\",\\\" to separate them. \n     */\n    log_message?: string;\n    /**\n     * The path to use in related actions. \n     */\n    path?: string;\n}\n\nexport interface RuleAction extends _RuleAction {\n    _builtin_original?: _RuleAction;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RuleActionImpl  implements _RuleAction {\n    _builtin_original?: _RuleAction = undefined;\n    public action: RuleAction.ActionEnum ;\n    public log_message: string  | undefined ;\n    public path: string  | undefined ;\n    constructor(base: _RuleAction) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'action') >= 0) {\n            this.action = base.action;\n        }\n        if (Object.keys(base).findIndex(key => key === 'log_message') >= 0) {\n            this.log_message = base.log_message;\n        }\n        if (Object.keys(base).findIndex(key => key === 'path') >= 0) {\n            this.path = base.path;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace RuleAction {\n    export type ActionEnum = 'allow' | 'deny' | 'redirect' | 'log' | 'none' | 'revocation_check' | 'mfa';\n    export const ActionEnum = {\n        allow: 'allow' as ActionEnum,\n        deny: 'deny' as ActionEnum,\n        redirect: 'redirect' as ActionEnum,\n        log: 'log' as ActionEnum,\n        none: 'none' as ActionEnum,\n        revocation_check: 'revocation_check' as ActionEnum,\n        mfa: 'mfa' as ActionEnum\n    };\n}\n\n\nexport function newRuleActionImpl(base: _RuleAction): RuleActionImpl {\n    return new RuleActionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RuleCondition, RuleCondition, RuleConditionImpl, newRuleConditionImpl } from './ruleCondition';\nimport { _RuleAction, RuleAction, RuleActionImpl, newRuleActionImpl } from './ruleAction';\nimport { _RuleScopeEnum, RuleScopeEnum, RuleScopeEnumImpl, newRuleScopeEnumImpl } from './ruleScopeEnum';\nimport { _HttpRule, HttpRule, HttpRuleImpl, newHttpRuleImpl } from './httpRule';\n\n\n/**\n * A Rule defines a set of conditions which, if matched, allow a request to proceed through the system. If no rules match, the request will be denied. The Rule is a base class, with more concrete classes specifying precise match conditions. Rules may be associated with roles to allow for users to be granted collections of rules. Rules are uniquely identified by their id.  Note that `condition` is deprected. Use the http_rule_condition within extended_condition instead. If both fields are defined, the `condition will be evaluated alongside the `extended_condition` as though the two were part of a `CompoundRuleCondition` using DNF. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RuleConfig { \n    /**\n     * The name of the rule.\n     */\n    name: string;\n    /**\n     * The list of roles assigned to this rule.\n     */\n    roles?: Array<string>;\n    /**\n     * The list of roles excluded from this rule.\n     */\n    excluded_roles?: Array<string>;\n    /**\n     * A description of the rule. The comments have no functional effect, but can help to clarify the purpose of a rule when the name is not sufficient. \n     */\n    comments?: string;\n    condition?: HttpRule;\n    scope?: RuleScopeEnum;\n    extended_condition?: RuleCondition;\n    /**\n     * The priority of the rule relative to other rules at the top level: that is, if this rule is not being evaluated as part of a RuleSet, it is assumed to be within a \\'global\\' RuleSet that contains all \\'root\\' rules. In that case, this priority applies.  Rules are evaluated in order of higher priority number to lower priority number. \n     */\n    priority?: number;\n    /**\n     * The actions to take if the rule evaluates to true. At least one of allow or deny must be present in the action list for the system to effectively operate on the request. By default, if neither allow nor deny is present in the list of actions resulting from the rule, the request will be allowed. Some actions may conflict.  If there is a conflict, the first action in the preorder depth-first-search traversal of the rule tree will take precedence. For example, deny and allow are conflicting actions. If the parent rule has deny, and a sub_rule has allow, then the request will be denied. Or, if the parent rule has none, the first sub-rule has allow, and the second sub-rule has deny, the request will be allowed. \n     */\n    actions?: Array<RuleAction>;\n}\n\nexport interface RuleConfig extends _RuleConfig {\n    _builtin_original?: _RuleConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RuleConfigImpl  implements _RuleConfig {\n    _builtin_original?: _RuleConfig = undefined;\n    public name: string ;\n    public roles: Array<string>  | undefined ;\n    public excluded_roles: Array<string>  | undefined ;\n    public comments: string  | undefined ;\n    public condition: HttpRule  | undefined ;\n    public scope: RuleScopeEnum  | undefined ;\n    public extended_condition: RuleCondition  | undefined ;\n    public priority: number  | undefined ;\n    public actions: Array<RuleAction>  | undefined ;\n    constructor(base: _RuleConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'roles') >= 0) {\n            this.roles = base.roles;\n        }\n        if (Object.keys(base).findIndex(key => key === 'excluded_roles') >= 0) {\n            this.excluded_roles = base.excluded_roles;\n        }\n        if (Object.keys(base).findIndex(key => key === 'comments') >= 0) {\n            this.comments = base.comments;\n        }\n        if (Object.keys(base).findIndex(key => key === 'condition') >= 0) {\n            this.condition = base.condition;\n        }\n        if (Object.keys(base).findIndex(key => key === 'scope') >= 0) {\n            this.scope = base.scope;\n        }\n        if (Object.keys(base).findIndex(key => key === 'extended_condition') >= 0) {\n            this.extended_condition = base.extended_condition;\n        }\n        if (Object.keys(base).findIndex(key => key === 'priority') >= 0) {\n            this.priority = base.priority;\n        }\n        if (Object.keys(base).findIndex(key => key === 'actions') >= 0) {\n            if (base.actions) {\n                this.actions = base.actions.map((original) => newRuleActionImpl(original));\n            } else {\n                this.actions = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.actions !== undefined) {\n            for (const item of this.actions) {\n                if (item !== undefined && (item as RuleActionImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RuleActionImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newRuleConfigImpl(base: _RuleConfig): RuleConfigImpl {\n    return new RuleConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _SimpleResourcePolicyTemplateStructure, SimpleResourcePolicyTemplateStructure, SimpleResourcePolicyTemplateStructureImpl, newSimpleResourcePolicyTemplateStructureImpl } from './simpleResourcePolicyTemplateStructure';\nimport { _RuleConfig, RuleConfig, RuleConfigImpl, newRuleConfigImpl } from './ruleConfig';\n\n\n/**\n * Contains a set of policy rules along with a simple relationship structure that allows users to define a simplified, tabular view of their policy for a given resource. The list of rules define the rules that may be used by the resource. The policy_structure defines how they are actually used: the order (priority) in which they are evaluated, as well as how they are nested, if at all.  `policy_structure` is essentially a list of trees. Each tree forms one compound rule which will be evaluated, in priority order (highest to lowest). The first matching tree\\'s actions are taken. A given policy_structure can have a maximum depth of 6, including the root, and a maximum of 32 nodes.  Set the object_type and object id according to the resource to which this template applies \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SimpleResourcePolicyTemplate { \n    /**\n     * The list of trees defining the structure of this policy. \n     */\n    policy_structure: Array<SimpleResourcePolicyTemplateStructure>;\n    /**\n     * The rules which may be used in the `policy_structure`. A given rule is only applied by the policy if it is referenced by at least one policy_structure node. \n     */\n    rules: Array<RuleConfig>;\n    /**\n     * The descriminator for the PolicyTemplate. Set this to `simple_resource`\n     */\n    template_type: string;\n}\n\nexport interface SimpleResourcePolicyTemplate extends _SimpleResourcePolicyTemplate {\n    _builtin_original?: _SimpleResourcePolicyTemplate;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SimpleResourcePolicyTemplateImpl  implements _SimpleResourcePolicyTemplate {\n    _builtin_original?: _SimpleResourcePolicyTemplate = undefined;\n    public policy_structure: Array<SimpleResourcePolicyTemplateStructure> ;\n    public rules: Array<RuleConfig> ;\n    public template_type: string ;\n    constructor(base: _SimpleResourcePolicyTemplate) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'policy_structure') >= 0) {\n            if (base.policy_structure) {\n                this.policy_structure = base.policy_structure.map((original) => newSimpleResourcePolicyTemplateStructureImpl(original));\n            } else {\n                this.policy_structure = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'rules') >= 0) {\n            if (base.rules) {\n                this.rules = base.rules.map((original) => newRuleConfigImpl(original));\n            } else {\n                this.rules = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'template_type') >= 0) {\n            this.template_type = base.template_type;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.policy_structure !== undefined) {\n            for (const item of this.policy_structure) {\n                if (item !== undefined && (item as SimpleResourcePolicyTemplateStructureImpl)._remove_builtin_extensions !== undefined) {\n                    (item as SimpleResourcePolicyTemplateStructureImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.rules !== undefined) {\n            for (const item of this.rules) {\n                if (item !== undefined && (item as RuleConfigImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RuleConfigImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newSimpleResourcePolicyTemplateImpl(base: _SimpleResourcePolicyTemplate): SimpleResourcePolicyTemplateImpl {\n    return new SimpleResourcePolicyTemplateImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _SourceInfoPolicyTemplate, SourceInfoPolicyTemplate, SourceInfoPolicyTemplateImpl, newSourceInfoPolicyTemplateImpl } from './sourceInfoPolicyTemplate';\nimport { _SimpleResourcePolicyTemplate, SimpleResourcePolicyTemplate, SimpleResourcePolicyTemplateImpl, newSimpleResourcePolicyTemplateImpl } from './simpleResourcePolicyTemplate';\nimport { _SimpleResourcePolicyTemplateStructure, SimpleResourcePolicyTemplateStructure, SimpleResourcePolicyTemplateStructureImpl, newSimpleResourcePolicyTemplateStructureImpl } from './simpleResourcePolicyTemplateStructure';\nimport { _MFAPolicyTemplate, MFAPolicyTemplate, MFAPolicyTemplateImpl, newMFAPolicyTemplateImpl } from './mFAPolicyTemplate';\nimport { _RuleConfig, RuleConfig, RuleConfigImpl, newRuleConfigImpl } from './ruleConfig';\nimport { _InvalidPolicyTemplate, InvalidPolicyTemplate, InvalidPolicyTemplateImpl, newInvalidPolicyTemplateImpl } from './invalidPolicyTemplate';\n\n\n/**\n * @type PolicyTemplate\n * @export\n */\nexport type PolicyTemplate = InvalidPolicyTemplate | MFAPolicyTemplate | SimpleResourcePolicyTemplate | SourceInfoPolicyTemplate;\nexport type PolicyTemplateImpl = InvalidPolicyTemplateImpl | MFAPolicyTemplateImpl | SimpleResourcePolicyTemplateImpl | SourceInfoPolicyTemplateImpl;\nexport type _PolicyTemplate = _InvalidPolicyTemplate | _MFAPolicyTemplate | _SimpleResourcePolicyTemplate | _SourceInfoPolicyTemplate;\n\nexport function newPolicyTemplateImpl(base :_PolicyTemplate): _PolicyTemplate {\n    if (instanceOfInvalidPolicyTemplate(base)) {\n        return newInvalidPolicyTemplateImpl(base);\n    }\n    if (instanceOfMFAPolicyTemplate(base)) {\n        return newMFAPolicyTemplateImpl(base);\n    }\n    if (instanceOfSimpleResourcePolicyTemplate(base)) {\n        return newSimpleResourcePolicyTemplateImpl(base);\n    }\n    if (instanceOfSourceInfoPolicyTemplate(base)) {\n        return newSourceInfoPolicyTemplateImpl(base);\n    }\n\n    // Worse case return it without the builtin copies. The various bits of code handle\n    // it missing.\n    return base;\n}\n\nexport function instanceOfInvalidPolicyTemplate(object: any): object is InvalidPolicyTemplate {\n    return object.template_type === \"invalid\";\n}\nexport function instanceOfMFAPolicyTemplate(object: any): object is MFAPolicyTemplate {\n    return object.template_type === \"mfa\";\n}\nexport function instanceOfSimpleResourcePolicyTemplate(object: any): object is SimpleResourcePolicyTemplate {\n    return object.template_type === \"simple_resource\";\n}\nexport function instanceOfSourceInfoPolicyTemplate(object: any): object is SourceInfoPolicyTemplate {\n    return object.template_type === \"source_info\";\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PolicyTemplate, PolicyTemplate, PolicyTemplateImpl, newPolicyTemplateImpl } from './policyTemplate';\n\n\n/**\n * The definition of a PolicyTemplateInstance. `template` defines the concrete parameters of the template as well as its type. The org id defines the organisation to which the template applies.  priority defines how this instance is evaluated relative to others. In particular, a PolicyTemplateInstance with a priority of 1 will be evalated before one with a priority of 0. If unset, the priority defaults to 0.  If object_id is set, the policy will be associated with resources of that ID. If object_type is set, the policy will be associated with resources of that type. Note that this means you can define a policy for all resources of a given type (e.g. ssh) by setting the object_type to \\\"ssh\\\" and leaving object_id undefined. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PolicyTemplateInstanceSpec { \n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    template: PolicyTemplate;\n    /**\n     * A brief description of the template\n     */\n    description?: string;\n    /**\n     * A short name used to unqiuely identify this instance. May be descriptive, but primarily used for idempotency. Cannot be changed after creation. \n     */\n    name: string;\n    /**\n     * The priority of a rule. Lower numbers are lower priority. The engine evaluates rules in order of highest priority to lowest. \n     */\n    priority?: number;\n    /**\n     * Unique identifier\n     */\n    object_id?: string;\n    /**\n     * The type of an object\n     */\n    object_type?: string;\n}\n\nexport interface PolicyTemplateInstanceSpec extends _PolicyTemplateInstanceSpec {\n    _builtin_original?: _PolicyTemplateInstanceSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PolicyTemplateInstanceSpecImpl  implements _PolicyTemplateInstanceSpec {\n    _builtin_original?: _PolicyTemplateInstanceSpec = undefined;\n    public org_id: string ;\n    public template: PolicyTemplate ;\n    public description: string  | undefined ;\n    public name: string ;\n    public priority: number  | undefined ;\n    public object_id: string  | undefined ;\n    public object_type: string  | undefined ;\n    constructor(base: _PolicyTemplateInstanceSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'template') >= 0) {\n            this.template = base.template;\n        }\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'priority') >= 0) {\n            this.priority = base.priority;\n        }\n        if (Object.keys(base).findIndex(key => key === 'object_id') >= 0) {\n            this.object_id = base.object_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'object_type') >= 0) {\n            this.object_type = base.object_type;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newPolicyTemplateInstanceSpecImpl(base: _PolicyTemplateInstanceSpec): PolicyTemplateInstanceSpecImpl {\n    return new PolicyTemplateInstanceSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _BillingProductPrice, BillingProductPrice, BillingProductPriceImpl, newBillingProductPriceImpl } from './billingProductPrice';\n\n\n/**\n * The specification for a Product.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ProductSpec { \n    /**\n     * The product\\'s name, meant to be displayable to the customer.\n     */\n    name: string;\n    /**\n     * The product\\'s detailed description.\n     */\n    description?: string;\n    /**\n     * Product is in dev mode, used for connecting to non-live backend billing API. \n     */\n    dev_mode?: boolean;\n    /**\n     * A unique short name for this product. This is used to query for a product with a specific label. \n     */\n    label?: string;\n    /**\n     * A list of billing product price ids that are contained in this Product\n     */\n    billing_product_prices?: Array<BillingProductPrice>;\n    /**\n     * Product trial period (days) \n     */\n    trial_period?: number | null;\n    /**\n     * A list of product features by guid associated with this product. \n     */\n    features?: Array<string> | null;\n}\n\nexport interface ProductSpec extends _ProductSpec {\n    _builtin_original?: _ProductSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ProductSpecImpl  implements _ProductSpec {\n    _builtin_original?: _ProductSpec = undefined;\n    public name: string ;\n    public description: string  | undefined ;\n    public dev_mode: boolean  | undefined ;\n    public label: string  | undefined ;\n    public billing_product_prices: Array<BillingProductPrice>  | undefined ;\n    public trial_period: number | null  | undefined ;\n    public features: Array<string> | null  | undefined ;\n    constructor(base: _ProductSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'dev_mode') >= 0) {\n            this.dev_mode = base.dev_mode;\n        }\n        if (Object.keys(base).findIndex(key => key === 'label') >= 0) {\n            this.label = base.label;\n        }\n        if (Object.keys(base).findIndex(key => key === 'billing_product_prices') >= 0) {\n            if (base.billing_product_prices) {\n                this.billing_product_prices = base.billing_product_prices.map((original) => newBillingProductPriceImpl(original));\n            } else {\n                this.billing_product_prices = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'trial_period') >= 0) {\n            this.trial_period = base.trial_period;\n        }\n        if (Object.keys(base).findIndex(key => key === 'features') >= 0) {\n            this.features = base.features;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.billing_product_prices !== undefined) {\n            for (const item of this.billing_product_prices) {\n                if (item !== undefined && (item as BillingProductPriceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as BillingProductPriceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newProductSpecImpl(base: _ProductSpec): ProductSpecImpl {\n    return new ProductSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _BillingProductPrice, BillingProductPrice, BillingProductPriceImpl, newBillingProductPriceImpl } from './billingProductPrice';\nimport { _Feature, Feature, FeatureImpl, newFeatureImpl } from './feature';\n\n\n/**\n * The status for a Product.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ProductStatus { \n    /**\n     * A list of billing products that are contained in this Product\n     */\n    billing_product_prices?: Array<BillingProductPrice>;\n    /**\n     * a list of features associated with this product\n     */\n    features?: Array<Feature>;\n}\n\nexport interface ProductStatus extends _ProductStatus {\n    _builtin_original?: _ProductStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ProductStatusImpl  implements _ProductStatus {\n    _builtin_original?: _ProductStatus = undefined;\n    public billing_product_prices: Array<BillingProductPrice>  | undefined ;\n    public features: Array<Feature>  | undefined ;\n    constructor(base: _ProductStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'billing_product_prices') >= 0) {\n            if (base.billing_product_prices) {\n                this.billing_product_prices = base.billing_product_prices.map((original) => newBillingProductPriceImpl(original));\n            } else {\n                this.billing_product_prices = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'features') >= 0) {\n            if (base.features) {\n                this.features = base.features.map((original) => newFeatureImpl(original));\n            } else {\n                this.features = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.billing_product_prices !== undefined) {\n            for (const item of this.billing_product_prices) {\n                if (item !== undefined && (item as BillingProductPriceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as BillingProductPriceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.features !== undefined) {\n            for (const item of this.features) {\n                if (item !== undefined && (item as FeatureImpl)._remove_builtin_extensions !== undefined) {\n                    (item as FeatureImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newProductStatusImpl(base: _ProductStatus): ProductStatusImpl {\n    return new ProductStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _LicensedFeature, LicensedFeature, LicensedFeatureImpl, newLicensedFeatureImpl } from './licensedFeature';\nimport { _LicenseConstraint, LicenseConstraint, LicenseConstraintImpl, newLicenseConstraintImpl } from './licenseConstraint';\nimport { _LicensedProduct, LicensedProduct, LicensedProductImpl, newLicensedProductImpl } from './licensedProduct';\n\n\n/**\n * A set of LicensedProducts and related LicensedFeatures. The list of features is independent from the list of products. Each product selects a subset of features. Given a product, a license determines what features it provides and the constraints on them by combining the information (particularly constraints) from the product with the set of features. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ProductTable { \n    /**\n     * The products provided by the table \n     */\n    products: Array<LicensedProduct>;\n    /**\n     * The features provided by the table \n     */\n    features: Array<LicensedFeature>;\n    /**\n     * A dictionary of values to pass in to constraint evaluation. These values will be provided to the constraints via the \\'input_vars\\' variable. Constraint variables are merged using the same priority as the constraints themselves. \n     */\n    constraint_variables?: { [key: string]: object | undefined; };\n    /**\n     * Constraints which apply to all products and versions \n     */\n    global_constraints?: Array<LicenseConstraint>;\n}\n\nexport interface ProductTable extends _ProductTable {\n    _builtin_original?: _ProductTable;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ProductTableImpl  implements _ProductTable {\n    _builtin_original?: _ProductTable = undefined;\n    public products: Array<LicensedProduct> ;\n    public features: Array<LicensedFeature> ;\n    public constraint_variables: { [key: string]: object | undefined; }  | undefined ;\n    public global_constraints: Array<LicenseConstraint>  | undefined ;\n    constructor(base: _ProductTable) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'products') >= 0) {\n            if (base.products) {\n                this.products = base.products.map((original) => newLicensedProductImpl(original));\n            } else {\n                this.products = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'features') >= 0) {\n            if (base.features) {\n                this.features = base.features.map((original) => newLicensedFeatureImpl(original));\n            } else {\n                this.features = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'constraint_variables') >= 0) {\n            this.constraint_variables = base.constraint_variables;\n        }\n        if (Object.keys(base).findIndex(key => key === 'global_constraints') >= 0) {\n            if (base.global_constraints) {\n                this.global_constraints = base.global_constraints.map((original) => newLicenseConstraintImpl(original));\n            } else {\n                this.global_constraints = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.products !== undefined) {\n            for (const item of this.products) {\n                if (item !== undefined && (item as LicensedProductImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LicensedProductImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.features !== undefined) {\n            for (const item of this.features) {\n                if (item !== undefined && (item as LicensedFeatureImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LicensedFeatureImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.global_constraints !== undefined) {\n            for (const item of this.global_constraints) {\n                if (item !== undefined && (item as LicenseConstraintImpl)._remove_builtin_extensions !== undefined) {\n                    (item as LicenseConstraintImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newProductTableImpl(base: _ProductTable): ProductTableImpl {\n    return new ProductTableImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ProductTable, ProductTable, ProductTableImpl, newProductTableImpl } from './productTable';\n\n\n/**\n * The specification of a ProductTableVersion. This includes the actual ProductTable, alongside information like the version. The version determines which ProductTableVersion is used by default. The system uses the most recent product table according to the version. That is, it sorts by version descending, then uses the top item. Only versions which are published will be used. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ProductTableVersionSpec { \n    /**\n     * The version of a product table, used to uniquely identify it.\n     */\n    version: string;\n    product_table: ProductTable;\n    /**\n     * Whether or not to consider this version for new licenses. \n     */\n    published: boolean;\n}\n\nexport interface ProductTableVersionSpec extends _ProductTableVersionSpec {\n    _builtin_original?: _ProductTableVersionSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ProductTableVersionSpecImpl  implements _ProductTableVersionSpec {\n    _builtin_original?: _ProductTableVersionSpec = undefined;\n    public version: string ;\n    public product_table: ProductTable ;\n    public published: boolean ;\n    constructor(base: _ProductTableVersionSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'version') >= 0) {\n            this.version = base.version;\n        }\n        if (Object.keys(base).findIndex(key => key === 'product_table') >= 0) {\n            this.product_table = base.product_table;\n        }\n        if (Object.keys(base).findIndex(key => key === 'published') >= 0) {\n            this.published = base.published;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newProductTableVersionSpecImpl(base: _ProductTableVersionSpec): ProductTableVersionSpecImpl {\n    return new ProductTableVersionSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configuration for a PublicFileOrgLink \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _PublicFileOrgLinkSpec { \n    /**\n     * A file tag\n     */\n    file_tag: string;\n    /**\n     * requests for this org id will be linked to `target_org_id` \n     */\n    link_org_id: any | null;\n    /**\n     * requests for `link_org_id` will be linked to this. \n     */\n    target_org_id: any | null;\n}\n\nexport interface PublicFileOrgLinkSpec extends _PublicFileOrgLinkSpec {\n    _builtin_original?: _PublicFileOrgLinkSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class PublicFileOrgLinkSpecImpl  implements _PublicFileOrgLinkSpec {\n    _builtin_original?: _PublicFileOrgLinkSpec = undefined;\n    public file_tag: string ;\n    public link_org_id: any | null ;\n    public target_org_id: any | null ;\n    constructor(base: _PublicFileOrgLinkSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'file_tag') >= 0) {\n            this.file_tag = base.file_tag;\n        }\n        if (Object.keys(base).findIndex(key => key === 'link_org_id') >= 0) {\n            this.link_org_id = base.link_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'target_org_id') >= 0) {\n            this.target_org_id = base.target_org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newPublicFileOrgLinkSpecImpl(base: _PublicFileOrgLinkSpec): PublicFileOrgLinkSpecImpl {\n    return new PublicFileOrgLinkSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _User, User, UserImpl, newUserImpl } from './user';\nimport { _TimeValidity, TimeValidity, TimeValidityImpl, newTimeValidityImpl } from './timeValidity';\n\n\n/**\n * Raw token\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RawToken { \n    /**\n     * token string\n     */\n    token: string;\n    /**\n     * A refresh token specific to token. \n     */\n    refresh_token?: string;\n    /**\n     * Unique identifier\n     */\n    readonly session?: string;\n    time_validity?: TimeValidity;\n    user?: User;\n}\n\nexport interface RawToken extends _RawToken {\n    _builtin_original?: _RawToken;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RawTokenImpl  implements _RawToken {\n    _builtin_original?: _RawToken = undefined;\n    public token: string ;\n    public refresh_token: string  | undefined ;\n    public readonly session: string  | undefined ;\n    public time_validity: TimeValidity  | undefined ;\n    public user: User  | undefined ;\n    constructor(base: _RawToken) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'token') >= 0) {\n            this.token = base.token;\n        }\n        if (Object.keys(base).findIndex(key => key === 'refresh_token') >= 0) {\n            this.refresh_token = base.refresh_token;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session') >= 0) {\n            this.session = base.session;\n        }\n        if (Object.keys(base).findIndex(key => key === 'time_validity') >= 0) {\n            this.time_validity = base.time_validity;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user') >= 0) {\n            this.user = base.user;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newRawTokenImpl(base: _RawToken): RawTokenImpl {\n    return new RawTokenImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The system associates Organistions with various components of the policy framework on creation. These can fall out of sync for various reasons. This object controls a reconcile process that allows for ensuring that an Organisation is up to date with the defaults after the fact. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ReconcileOrgDefaultPolicyRequest { \n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n    /**\n     * Limit on how many orgs will be considered at a time\n     */\n    limit?: number;\n}\n\nexport interface ReconcileOrgDefaultPolicyRequest extends _ReconcileOrgDefaultPolicyRequest {\n    _builtin_original?: _ReconcileOrgDefaultPolicyRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ReconcileOrgDefaultPolicyRequestImpl  implements _ReconcileOrgDefaultPolicyRequest {\n    _builtin_original?: _ReconcileOrgDefaultPolicyRequest = undefined;\n    public org_id: string  | undefined ;\n    public limit: number  | undefined ;\n    constructor(base: _ReconcileOrgDefaultPolicyRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'limit') >= 0) {\n            this.limit = base.limit;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newReconcileOrgDefaultPolicyRequestImpl(base: _ReconcileOrgDefaultPolicyRequest): ReconcileOrgDefaultPolicyRequestImpl {\n    return new ReconcileOrgDefaultPolicyRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The result of reconciling the default policy for a particular org. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ReconcileOrgDefaultPolicyResponsePerOrg { \n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * Unique identifier\n     */\n    ruleset_bundle_id?: string;\n    /**\n     * Why we may have failed to update this particular org \n     */\n    failure?: string;\n}\n\nexport interface ReconcileOrgDefaultPolicyResponsePerOrg extends _ReconcileOrgDefaultPolicyResponsePerOrg {\n    _builtin_original?: _ReconcileOrgDefaultPolicyResponsePerOrg;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ReconcileOrgDefaultPolicyResponsePerOrgImpl  implements _ReconcileOrgDefaultPolicyResponsePerOrg {\n    _builtin_original?: _ReconcileOrgDefaultPolicyResponsePerOrg = undefined;\n    public org_id: string ;\n    public ruleset_bundle_id: string  | undefined ;\n    public failure: string  | undefined ;\n    constructor(base: _ReconcileOrgDefaultPolicyResponsePerOrg) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ruleset_bundle_id') >= 0) {\n            this.ruleset_bundle_id = base.ruleset_bundle_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'failure') >= 0) {\n            this.failure = base.failure;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newReconcileOrgDefaultPolicyResponsePerOrgImpl(base: _ReconcileOrgDefaultPolicyResponsePerOrg): ReconcileOrgDefaultPolicyResponsePerOrgImpl {\n    return new ReconcileOrgDefaultPolicyResponsePerOrgImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ReconcileOrgDefaultPolicyResponsePerOrg, ReconcileOrgDefaultPolicyResponsePerOrg, ReconcileOrgDefaultPolicyResponsePerOrgImpl, newReconcileOrgDefaultPolicyResponsePerOrgImpl } from './reconcileOrgDefaultPolicyResponsePerOrg';\n\n\n/**\n * The result of reconciling the orgs. Will not contain any details for unmodified organisations. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ReconcileOrgDefaultPolicyResponse { \n    /**\n     * The details for the organisations that were modified \n     */\n    modified?: Array<ReconcileOrgDefaultPolicyResponsePerOrg>;\n}\n\nexport interface ReconcileOrgDefaultPolicyResponse extends _ReconcileOrgDefaultPolicyResponse {\n    _builtin_original?: _ReconcileOrgDefaultPolicyResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ReconcileOrgDefaultPolicyResponseImpl  implements _ReconcileOrgDefaultPolicyResponse {\n    _builtin_original?: _ReconcileOrgDefaultPolicyResponse = undefined;\n    public modified: Array<ReconcileOrgDefaultPolicyResponsePerOrg>  | undefined ;\n    constructor(base: _ReconcileOrgDefaultPolicyResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'modified') >= 0) {\n            if (base.modified) {\n                this.modified = base.modified.map((original) => newReconcileOrgDefaultPolicyResponsePerOrgImpl(original));\n            } else {\n                this.modified = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.modified !== undefined) {\n            for (const item of this.modified) {\n                if (item !== undefined && (item as ReconcileOrgDefaultPolicyResponsePerOrgImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ReconcileOrgDefaultPolicyResponsePerOrgImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newReconcileOrgDefaultPolicyResponseImpl(base: _ReconcileOrgDefaultPolicyResponse): ReconcileOrgDefaultPolicyResponseImpl {\n    return new ReconcileOrgDefaultPolicyResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A request to create or remove a sub org\\'s issuer. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ReconcileSubOrgIssuerRequest { \n    /**\n     * Whether the suborg should have its own issuer. If true, an issuer is created for the suborg. If false, any unique issuer for the suborg is removed, and it is associated with its parent org\\'s issuer. \n     */\n    own_issuer: boolean;\n}\n\nexport interface ReconcileSubOrgIssuerRequest extends _ReconcileSubOrgIssuerRequest {\n    _builtin_original?: _ReconcileSubOrgIssuerRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ReconcileSubOrgIssuerRequestImpl  implements _ReconcileSubOrgIssuerRequest {\n    _builtin_original?: _ReconcileSubOrgIssuerRequest = undefined;\n    public own_issuer: boolean ;\n    constructor(base: _ReconcileSubOrgIssuerRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'own_issuer') >= 0) {\n            this.own_issuer = base.own_issuer;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newReconcileSubOrgIssuerRequestImpl(base: _ReconcileSubOrgIssuerRequest): ReconcileSubOrgIssuerRequestImpl {\n    return new ReconcileSubOrgIssuerRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Controls how much information is sent via the Referer header. Corresponds to the Referrer-Policy header. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ReferrerPolicySettings { \n    /**\n     * Whether to apply the ReferrerPolicySettings. If false, no settings will be applied. Settings applied by the application itself will take effect. \n     */\n    enabled: boolean;\n    /**\n     * Controls the value of the Referrer-Policy header. - `no_referrer`: The Referer header will not be sent by the client. - `no_referrer_when_downgrade`: Only send the Referer header when the protocol\\'s security does not degrade.   (e.g. HTTPS to HTTP will lead to the header header not being sent). - `origin`: Only send the origin in the Referer header. - `origin_when_cross_origin`: Only send the origin in the Referer header when making cross origin requests.    Same-origin requests send the entire referer. - `same_origin`: Only send the origin in the Referer header for same-origin requests. - `strict_origin`: Send only the origin, and only then when the protocol\\'s security is    HTTPS. - `strict_origin_when_cross_origin`: Send the full Referer header for same-origin requests.    Send only the origin for cross-origin requests. Do not send any Referer header when the protocol\\'s    security degrades. This option is the default behaviour for most clients. - `unsafe_url`: Always send the entire Referer header. Warning: this setting could potentially leak private    or sensitive information contained in URLs. - `clear`: Removes the Referrer-Policy header from the server\\'s response if present. - `override`: Use the value specified in the override field. If it is not present, the   header will be set to an empty string. \n     */\n    mode: ReferrerPolicySettings.ModeEnum;\n    /**\n     * Set a specific value for the Referrer-Policy header.\n     */\n    override?: string | null;\n}\n\nexport interface ReferrerPolicySettings extends _ReferrerPolicySettings {\n    _builtin_original?: _ReferrerPolicySettings;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ReferrerPolicySettingsImpl  implements _ReferrerPolicySettings {\n    _builtin_original?: _ReferrerPolicySettings = undefined;\n    public enabled: boolean ;\n    public mode: ReferrerPolicySettings.ModeEnum ;\n    public override: string | null  | undefined ;\n    constructor(base: _ReferrerPolicySettings) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mode') >= 0) {\n            this.mode = base.mode;\n        }\n        if (Object.keys(base).findIndex(key => key === 'override') >= 0) {\n            this.override = base.override;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace ReferrerPolicySettings {\n    export type ModeEnum = 'no_referrer' | 'no_referrer_when_downgrade' | 'origin' | 'origin_when_cross_origin' | 'same_origin' | 'strict_origin' | 'strict_origin_when_cross_origin' | 'clear' | 'usafe_url' | 'override';\n    export const ModeEnum = {\n        no_referrer: 'no_referrer' as ModeEnum,\n        no_referrer_when_downgrade: 'no_referrer_when_downgrade' as ModeEnum,\n        origin: 'origin' as ModeEnum,\n        origin_when_cross_origin: 'origin_when_cross_origin' as ModeEnum,\n        same_origin: 'same_origin' as ModeEnum,\n        strict_origin: 'strict_origin' as ModeEnum,\n        strict_origin_when_cross_origin: 'strict_origin_when_cross_origin' as ModeEnum,\n        clear: 'clear' as ModeEnum,\n        usafe_url: 'usafe_url' as ModeEnum,\n        override: 'override' as ModeEnum\n    };\n}\n\n\nexport function newReferrerPolicySettingsImpl(base: _ReferrerPolicySettings): ReferrerPolicySettingsImpl {\n    return new ReferrerPolicySettingsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A refresh token request\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RefreshTokenRequest { \n    /**\n     * The token to be refreshed\n     */\n    token?: string;\n}\n\nexport interface RefreshTokenRequest extends _RefreshTokenRequest {\n    _builtin_original?: _RefreshTokenRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RefreshTokenRequestImpl  implements _RefreshTokenRequest {\n    _builtin_original?: _RefreshTokenRequest = undefined;\n    public token: string  | undefined ;\n    constructor(base: _RefreshTokenRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'token') >= 0) {\n            this.token = base.token;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newRefreshTokenRequestImpl(base: _RefreshTokenRequest): RefreshTokenRequestImpl {\n    return new RefreshTokenRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Describes how a Region may be accessed over the Internet. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RegionRouting { \n    /**\n     * If true, this region is public and is visible to external systems.\n     */\n    _public?: boolean;\n    /**\n     * If true, allow this Region to serve RoutingRequests.\n     */\n    requests_enabled?: boolean;\n    /**\n     * The domains that address this Region. Use these when configuring external systems such as a DNS CNAME or a firewall. \n     */\n    domains: Array<string>;\n    /**\n     * Organisation subdomains supported by this region\n     */\n    org_domains?: Array<string>;\n    /**\n     * If true, routing is restricted by user_id (see permitted_user_ids)\n     */\n    restrict_by_user_id?: boolean;\n    /**\n     * A list of user_ids that are permitted for using this region on a routing request. \n     */\n    permitted_user_ids?: Array<string>;\n    /**\n     * A Common Expression Library (CES) used to evaluate if a routing request should utilize this Region  The following objects are available to the ces program:      geoip:       iso_code:       city:       country:       currency:     token_info:       email:       sub:       org:  Example ces that evaluates to true if subscriber ip address is found in USA:      geoip.iso_code == \\'US\\' \n     */\n    ces?: string;\n}\n\nexport interface RegionRouting extends _RegionRouting {\n    _builtin_original?: _RegionRouting;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RegionRoutingImpl  implements _RegionRouting {\n    _builtin_original?: _RegionRouting = undefined;\n    public _public: boolean  | undefined ;\n    public requests_enabled: boolean  | undefined ;\n    public domains: Array<string> ;\n    public org_domains: Array<string>  | undefined ;\n    public restrict_by_user_id: boolean  | undefined ;\n    public permitted_user_ids: Array<string>  | undefined ;\n    public ces: string  | undefined ;\n    constructor(base: _RegionRouting) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === '_public') >= 0) {\n            this._public = base._public;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requests_enabled') >= 0) {\n            this.requests_enabled = base.requests_enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'domains') >= 0) {\n            this.domains = base.domains;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_domains') >= 0) {\n            this.org_domains = base.org_domains;\n        }\n        if (Object.keys(base).findIndex(key => key === 'restrict_by_user_id') >= 0) {\n            this.restrict_by_user_id = base.restrict_by_user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'permitted_user_ids') >= 0) {\n            this.permitted_user_ids = base.permitted_user_ids;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ces') >= 0) {\n            this.ces = base.ces;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newRegionRoutingImpl(base: _RegionRouting): RegionRoutingImpl {\n    return new RegionRoutingImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RegionRouting, RegionRouting, RegionRoutingImpl, newRegionRoutingImpl } from './regionRouting';\n\n\n/**\n * The RegionSpec describes the properties of a Region. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RegionSpec { \n    /**\n     * region name\n     */\n    name: string;\n    routing: RegionRouting;\n    /**\n     * Designates a particular PointOfPresence as a master.  This property is normally not required when there is a single PointOfPresence specified in pop_ids.  This guid must also exist inside pop_ids. \n     */\n    master_pop_id?: string;\n    /**\n     * the configured pop ids that are associated to this Region \n     */\n    pop_ids?: Array<string>;\n}\n\nexport interface RegionSpec extends _RegionSpec {\n    _builtin_original?: _RegionSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RegionSpecImpl  implements _RegionSpec {\n    _builtin_original?: _RegionSpec = undefined;\n    public name: string ;\n    public routing: RegionRouting ;\n    public master_pop_id: string  | undefined ;\n    public pop_ids: Array<string>  | undefined ;\n    constructor(base: _RegionSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'routing') >= 0) {\n            this.routing = base.routing;\n        }\n        if (Object.keys(base).findIndex(key => key === 'master_pop_id') >= 0) {\n            this.master_pop_id = base.master_pop_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'pop_ids') >= 0) {\n            this.pop_ids = base.pop_ids;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newRegionSpecImpl(base: _RegionSpec): RegionSpecImpl {\n    return new RegionSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _PointOfPresence, PointOfPresence, PointOfPresenceImpl, newPointOfPresenceImpl } from './pointOfPresence';\n\n\n/**\n * The PointOfPresenceStatus describes the status properties of a point of presence. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RegionStatus { \n    master_pop?: PointOfPresence;\n    pops?: Array<PointOfPresence>;\n}\n\nexport interface RegionStatus extends _RegionStatus {\n    _builtin_original?: _RegionStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RegionStatusImpl  implements _RegionStatus {\n    _builtin_original?: _RegionStatus = undefined;\n    public master_pop: PointOfPresence  | undefined ;\n    public pops: Array<PointOfPresence>  | undefined ;\n    constructor(base: _RegionStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'master_pop') >= 0) {\n            this.master_pop = base.master_pop;\n        }\n        if (Object.keys(base).findIndex(key => key === 'pops') >= 0) {\n            if (base.pops) {\n                this.pops = base.pops.map((original) => newPointOfPresenceImpl(original));\n            } else {\n                this.pops = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.pops !== undefined) {\n            for (const item of this.pops) {\n                if (item !== undefined && (item as PointOfPresenceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as PointOfPresenceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newRegionStatusImpl(base: _RegionStatus): RegionStatusImpl {\n    return new RegionStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The RemoteAppAccessInfo describes RemoteApp-related properties of a user\\'s access to a Desktop \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RemoteAppAccessInfo { \n    /**\n     * Whether the desktop provides access to a single application\n     */\n    is_remote_app: boolean;\n}\n\nexport interface RemoteAppAccessInfo extends _RemoteAppAccessInfo {\n    _builtin_original?: _RemoteAppAccessInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RemoteAppAccessInfoImpl  implements _RemoteAppAccessInfo {\n    _builtin_original?: _RemoteAppAccessInfo = undefined;\n    public is_remote_app: boolean ;\n    constructor(base: _RemoteAppAccessInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'is_remote_app') >= 0) {\n            this.is_remote_app = base.is_remote_app;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newRemoteAppAccessInfoImpl(base: _RemoteAppAccessInfo): RemoteAppAccessInfoImpl {\n    return new RemoteAppAccessInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourcePermission, ResourcePermission, ResourcePermissionImpl, newResourcePermissionImpl } from './resourcePermission';\n\n\n/**\n * Response object for rendering ResourcePermissions. This includes any permissions granted to the user from groups, etc. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RenderedResourcePermissions { \n    /**\n     * The permissions granted to the user\n     */\n    resource_permissions: Array<ResourcePermission>;\n    /**\n     * The id of the user to which the permissions apply\n     */\n    user_id: string;\n    /**\n     * The id of the org to which the permissions apply\n     */\n    org_id: string;\n}\n\nexport interface RenderedResourcePermissions extends _RenderedResourcePermissions {\n    _builtin_original?: _RenderedResourcePermissions;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RenderedResourcePermissionsImpl  implements _RenderedResourcePermissions {\n    _builtin_original?: _RenderedResourcePermissions = undefined;\n    public resource_permissions: Array<ResourcePermission> ;\n    public user_id: string ;\n    public org_id: string ;\n    constructor(base: _RenderedResourcePermissions) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'resource_permissions') >= 0) {\n            if (base.resource_permissions) {\n                this.resource_permissions = base.resource_permissions.map((original) => newResourcePermissionImpl(original));\n            } else {\n                this.resource_permissions = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.resource_permissions !== undefined) {\n            for (const item of this.resource_permissions) {\n                if (item !== undefined && (item as ResourcePermissionImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ResourcePermissionImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newRenderedResourcePermissionsImpl(base: _RenderedResourcePermissions): RenderedResourcePermissionsImpl {\n    return new RenderedResourcePermissionsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _JSONBodyConstraint, JSONBodyConstraint, JSONBodyConstraintImpl, newJSONBodyConstraintImpl } from './jSONBodyConstraint';\n\n\n/**\n * Body describes constraints on the request. It helps to prevent users from modifying special fields(e.g. userid) in the body to gain extra access rights in the system. The format of the body(e.g. JSON) is specified below with the restriction. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RenderedRuleBody { \n    /**\n     * Array of json body constraints\n     */\n    json?: Array<JSONBodyConstraint>;\n}\n\nexport interface RenderedRuleBody extends _RenderedRuleBody {\n    _builtin_original?: _RenderedRuleBody;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RenderedRuleBodyImpl  implements _RenderedRuleBody {\n    _builtin_original?: _RenderedRuleBody = undefined;\n    public json: Array<JSONBodyConstraint>  | undefined ;\n    constructor(base: _RenderedRuleBody) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'json') >= 0) {\n            if (base.json) {\n                this.json = base.json.map((original) => newJSONBodyConstraintImpl(original));\n            } else {\n                this.json = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.json !== undefined) {\n            for (const item of this.json) {\n                if (item !== undefined && (item as JSONBodyConstraintImpl)._remove_builtin_extensions !== undefined) {\n                    (item as JSONBodyConstraintImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newRenderedRuleBodyImpl(base: _RenderedRuleBody): RenderedRuleBodyImpl {\n    return new RenderedRuleBodyImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Request object for roles update\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ReplaceUserRoleRequest { \n    /**\n     * An associative array mapping an application to a list of roles\n     */\n    roles?: { [key: string]: Array<string> | undefined; };\n}\n\nexport interface ReplaceUserRoleRequest extends _ReplaceUserRoleRequest {\n    _builtin_original?: _ReplaceUserRoleRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ReplaceUserRoleRequestImpl  implements _ReplaceUserRoleRequest {\n    _builtin_original?: _ReplaceUserRoleRequest = undefined;\n    public roles: { [key: string]: Array<string> | undefined; }  | undefined ;\n    constructor(base: _ReplaceUserRoleRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'roles') >= 0) {\n            this.roles = base.roles;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newReplaceUserRoleRequestImpl(base: _ReplaceUserRoleRequest): ReplaceUserRoleRequestImpl {\n    return new ReplaceUserRoleRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Disable all multi-factor authentication methods for a user\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ResetMFAChallengeMethod { \n    /**\n     * Unique identifier\n     */\n    org_id: string;\n}\n\nexport interface ResetMFAChallengeMethod extends _ResetMFAChallengeMethod {\n    _builtin_original?: _ResetMFAChallengeMethod;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ResetMFAChallengeMethodImpl  implements _ResetMFAChallengeMethod {\n    _builtin_original?: _ResetMFAChallengeMethod = undefined;\n    public org_id: string ;\n    constructor(base: _ResetMFAChallengeMethod) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newResetMFAChallengeMethodImpl(base: _ResetMFAChallengeMethod): ResetMFAChallengeMethodImpl {\n    return new ResetMFAChallengeMethodImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A request to reset the current policy to the default policy\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ResetPolicyRequest { \n    /**\n     * The org id corresponding to the issuer whose policy you are updating\n     */\n    org_id: string;\n}\n\nexport interface ResetPolicyRequest extends _ResetPolicyRequest {\n    _builtin_original?: _ResetPolicyRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ResetPolicyRequestImpl  implements _ResetPolicyRequest {\n    _builtin_original?: _ResetPolicyRequest = undefined;\n    public org_id: string ;\n    constructor(base: _ResetPolicyRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newResetPolicyRequestImpl(base: _ResetPolicyRequest): ResetPolicyRequestImpl {\n    return new ResetPolicyRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Resets a user to use a new set of core properties. Doing this will remove many of their preferences (such as multifactor settings) so be sure to only do so if truly desired. Only users who belong to a single Organisation may be reset this way.  The user\\'s identifier will be changed to the value of new_identifier if no other users in the system share it. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ResetUserIdentityRequest { \n    /**\n     * The unique id of the Organisation to which this user belongs. \n     */\n    org_id: string;\n    /**\n     * User\\'s email address\n     */\n    new_identifier: string;\n}\n\nexport interface ResetUserIdentityRequest extends _ResetUserIdentityRequest {\n    _builtin_original?: _ResetUserIdentityRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ResetUserIdentityRequestImpl  implements _ResetUserIdentityRequest {\n    _builtin_original?: _ResetUserIdentityRequest = undefined;\n    public org_id: string ;\n    public new_identifier: string ;\n    constructor(base: _ResetUserIdentityRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'new_identifier') >= 0) {\n            this.new_identifier = base.new_identifier;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newResetUserIdentityRequestImpl(base: _ResetUserIdentityRequest): ResetUserIdentityRequestImpl {\n    return new ResetUserIdentityRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RolesConfig, RolesConfig, RolesConfigImpl, newRolesConfigImpl } from './rolesConfig';\nimport { _RulesConfig, RulesConfig, RulesConfigImpl, newRulesConfigImpl } from './rulesConfig';\nimport { _DisplayInfo, DisplayInfo, DisplayInfoImpl, newDisplayInfoImpl } from './displayInfo';\n\n\n/**\n * This object provides a container for all common configuration related to a Resource. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ResourceConfig { \n    roles_config?: RolesConfig;\n    rules_config?: RulesConfig;\n    display_info?: DisplayInfo;\n    /**\n     * Whether or not this Resource is published, and if so, how. A Resource that has been published somewhere will have high level details about it visible, such as its name and description. The enum values mean the following:   - no: This Resource is not published. It will only be visibile to users with       permission to access the Resource, or to administrators.   - public: This Resource is published to the public catalogue. Any user who       can request access to the organisation will see high level details about this       Resource. \n     */\n    published?: ResourceConfig.PublishedEnum;\n}\n\nexport interface ResourceConfig extends _ResourceConfig {\n    _builtin_original?: _ResourceConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ResourceConfigImpl  implements _ResourceConfig {\n    _builtin_original?: _ResourceConfig = undefined;\n    public roles_config: RolesConfig  | undefined ;\n    public rules_config: RulesConfig  | undefined ;\n    public display_info: DisplayInfo  | undefined ;\n    public published: ResourceConfig.PublishedEnum  | undefined ;\n    constructor(base: _ResourceConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'roles_config') >= 0) {\n            this.roles_config = base.roles_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'rules_config') >= 0) {\n            this.rules_config = base.rules_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'display_info') >= 0) {\n            this.display_info = base.display_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'published') >= 0) {\n            this.published = base.published;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace ResourceConfig {\n    export type PublishedEnum = 'no' | 'public';\n    export const PublishedEnum = {\n        no: 'no' as PublishedEnum,\n        public: 'public' as PublishedEnum\n    };\n}\n\n\nexport function newResourceConfigImpl(base: _ResourceConfig): ResourceConfigImpl {\n    return new ResourceConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * ResourceInfo holds information about the resource granted permission by a RenderedRule. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ResourceInfo { \n    /**\n     * The unique identifier of the resource.\n     */\n    readonly resource_id: string;\n    /**\n     * The organisation id corresponding to the organisation which administers the resource granted permissions by this. \n     */\n    readonly resource_org_id: string;\n    /**\n     * The type of resource. This describes how the resource can be accessed, its purpose, etc. In this particular context, it is useful mostly for display purposes. \n     */\n    readonly resource_type: string;\n}\n\nexport interface ResourceInfo extends _ResourceInfo {\n    _builtin_original?: _ResourceInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ResourceInfoImpl  implements _ResourceInfo {\n    _builtin_original?: _ResourceInfo = undefined;\n    public readonly resource_id: string ;\n    public readonly resource_org_id: string ;\n    public readonly resource_type: string ;\n    constructor(base: _ResourceInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'resource_id') >= 0) {\n            this.resource_id = base.resource_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_org_id') >= 0) {\n            this.resource_org_id = base.resource_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_type') >= 0) {\n            this.resource_type = base.resource_type;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newResourceInfoImpl(base: _ResourceInfo): ResourceInfoImpl {\n    return new ResourceInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A ResourceRoleSpec provides the configurable details of a ResourceRole.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ResourceRoleSpec { \n    /**\n     * The type of the resource referred to by `resource_id`.\n     */\n    resource_type: ResourceRoleSpec.ResourceTypeEnum;\n    /**\n     * A short descriptive name used to identify the role. Unique per resource_type. \n     */\n    role_name: string;\n    /**\n     * A brief description of the role detailing the purpose of the role and what sort of permissions it grants. \n     */\n    description?: string;\n}\n\nexport interface ResourceRoleSpec extends _ResourceRoleSpec {\n    _builtin_original?: _ResourceRoleSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ResourceRoleSpecImpl  implements _ResourceRoleSpec {\n    _builtin_original?: _ResourceRoleSpec = undefined;\n    public resource_type: ResourceRoleSpec.ResourceTypeEnum ;\n    public role_name: string ;\n    public description: string  | undefined ;\n    constructor(base: _ResourceRoleSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'resource_type') >= 0) {\n            this.resource_type = base.resource_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'role_name') >= 0) {\n            this.role_name = base.role_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace ResourceRoleSpec {\n    export type ResourceTypeEnum = 'fileshare' | 'application_service' | 'desktop' | 'group' | 'application' | 'launcher' | 'service_forwarder' | 'ssh' | 'database';\n    export const ResourceTypeEnum = {\n        fileshare: 'fileshare' as ResourceTypeEnum,\n        application_service: 'application_service' as ResourceTypeEnum,\n        desktop: 'desktop' as ResourceTypeEnum,\n        group: 'group' as ResourceTypeEnum,\n        application: 'application' as ResourceTypeEnum,\n        launcher: 'launcher' as ResourceTypeEnum,\n        service_forwarder: 'service_forwarder' as ResourceTypeEnum,\n        ssh: 'ssh' as ResourceTypeEnum,\n        database: 'database' as ResourceTypeEnum\n    };\n}\n\n\nexport function newResourceRoleSpecImpl(base: _ResourceRoleSpec): ResourceRoleSpecImpl {\n    return new ResourceRoleSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Intersection rule to use when determing what should use a resource. IE devices with tags \\'a\\' or \\'v\\' and ... Currently only tag selection is supported. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ResourceRuleGroup { \n    /**\n     * A list of machine tags for which a rule applies. \n     */\n    tags?: Array<string>;\n}\n\nexport interface ResourceRuleGroup extends _ResourceRuleGroup {\n    _builtin_original?: _ResourceRuleGroup;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ResourceRuleGroupImpl  implements _ResourceRuleGroup {\n    _builtin_original?: _ResourceRuleGroup = undefined;\n    public tags: Array<string>  | undefined ;\n    constructor(base: _ResourceRuleGroup) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'tags') >= 0) {\n            this.tags = base.tags;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newResourceRuleGroupImpl(base: _ResourceRuleGroup): ResourceRuleGroupImpl {\n    return new ResourceRuleGroupImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Resources session statistics.  A resource session refers to the communication channel between two endpoints.  ApplicationService, ServiceForwarder and FileShareService are all resources that associate communication to a specific resource with a session. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ResourceSessionStats { \n    /**\n     * total number of sessions\n     */\n    total?: number;\n    /**\n     * total number of allowed sessions\n     */\n    allowed?: number;\n    /**\n     * total number of denied sessions\n     */\n    denied?: number;\n    /**\n     * total number of failed sessions\n     */\n    failed?: number;\n}\n\nexport interface ResourceSessionStats extends _ResourceSessionStats {\n    _builtin_original?: _ResourceSessionStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ResourceSessionStatsImpl  implements _ResourceSessionStats {\n    _builtin_original?: _ResourceSessionStats = undefined;\n    public total: number  | undefined ;\n    public allowed: number  | undefined ;\n    public denied: number  | undefined ;\n    public failed: number  | undefined ;\n    constructor(base: _ResourceSessionStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'total') >= 0) {\n            this.total = base.total;\n        }\n        if (Object.keys(base).findIndex(key => key === 'allowed') >= 0) {\n            this.allowed = base.allowed;\n        }\n        if (Object.keys(base).findIndex(key => key === 'denied') >= 0) {\n            this.denied = base.denied;\n        }\n        if (Object.keys(base).findIndex(key => key === 'failed') >= 0) {\n            this.failed = base.failed;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newResourceSessionStatsImpl(base: _ResourceSessionStats): ResourceSessionStatsImpl {\n    return new ResourceSessionStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourceTypeEnum, ResourceTypeEnum, ResourceTypeEnumImpl, newResourceTypeEnumImpl } from './resourceTypeEnum';\nimport { _ResourceMember, ResourceMember, ResourceMemberImpl, newResourceMemberImpl } from './resourceMember';\nimport { _ResourceConfig, ResourceConfig, ResourceConfigImpl, newResourceConfigImpl } from './resourceConfig';\n\n\n/**\n * The configurable properties of a Resource. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ResourceSpec { \n    /**\n     * The human readable name of the resource. Names are unique for a given resource type within an organisation. \n     */\n    name: string;\n    resource_type: ResourceTypeEnum;\n    /**\n     * The unique ID of the organisation which owns this Resource.\n     */\n    org_id: string;\n    /**\n     * A human readable slug to identify a resource and that is rfc1035 label compliant. The length has been restricted to 20 characters such that this name can be concatenated with other names or slugs. A slug is readOnly as it is generated by the backend resource. \n     */\n    name_slug?: string;\n    /**\n     * Most resources can be assigned permission. However when a resource cannot be assigned a permission, this field is used (set to true), which notifies consumers of this API that the resource cannot be assigned a permission. This field defaults to false. \n     */\n    not_assignable_perm?: boolean;\n    config?: ResourceConfig;\n    /**\n     * A list of resources that are contained or associated with this Resource.\n     */\n    resource_members?: Array<ResourceMember>;\n    /**\n     * Rules bundle id (see StandaloneRulesetBundle) applied to this resource. \n     */\n    bundle_id?: string;\n    /**\n     * When true, the resource is considered a demo resource, and will be auto-deleted after 24 hours. \n     */\n    demo?: boolean;\n}\n\nexport interface ResourceSpec extends _ResourceSpec {\n    _builtin_original?: _ResourceSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ResourceSpecImpl  implements _ResourceSpec {\n    _builtin_original?: _ResourceSpec = undefined;\n    public name: string ;\n    public resource_type: ResourceTypeEnum ;\n    public org_id: string ;\n    public name_slug: string  | undefined ;\n    public not_assignable_perm: boolean  | undefined ;\n    public config: ResourceConfig  | undefined ;\n    public resource_members: Array<ResourceMember>  | undefined ;\n    public bundle_id: string  | undefined ;\n    public demo: boolean  | undefined ;\n    constructor(base: _ResourceSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_type') >= 0) {\n            this.resource_type = base.resource_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name_slug') >= 0) {\n            this.name_slug = base.name_slug;\n        }\n        if (Object.keys(base).findIndex(key => key === 'not_assignable_perm') >= 0) {\n            this.not_assignable_perm = base.not_assignable_perm;\n        }\n        if (Object.keys(base).findIndex(key => key === 'config') >= 0) {\n            this.config = base.config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_members') >= 0) {\n            if (base.resource_members) {\n                this.resource_members = base.resource_members.map((original) => newResourceMemberImpl(original));\n            } else {\n                this.resource_members = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'bundle_id') >= 0) {\n            this.bundle_id = base.bundle_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'demo') >= 0) {\n            this.demo = base.demo;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.resource_members !== undefined) {\n            for (const item of this.resource_members) {\n                if (item !== undefined && (item as ResourceMemberImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ResourceMemberImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newResourceSpecImpl(base: _ResourceSpec): ResourceSpecImpl {\n    return new ResourceSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourceStatsMetadata, ResourceStatsMetadata, ResourceStatsMetadataImpl, newResourceStatsMetadataImpl } from './resourceStatsMetadata';\nimport { _ResourceSessionStats, ResourceSessionStats, ResourceSessionStatsImpl, newResourceSessionStatsImpl } from './resourceSessionStats';\n\n\n/**\n * The stats object for a Resource. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ResourceStats { \n    /**\n     * The unique ID of the resource. The id is provided here so that a list of resource stats can be POSTed in a single request. \n     */\n    resource_id?: string;\n    metadata?: ResourceStatsMetadata;\n    /**\n     * The summary status of the Resource. - A `good` status means that no action is neccessary on this Resource - A `warn` status means that there is an issue that should be dealt with   Examples include a forwarder resource that cannot bind to the provisioned port (eg. permission   issue binding to port 80) - A `down` status indicates that there is a service accessibility problem   that should be dealt with as soon as possible. This could mean that there is a   problem with the Resource\\'s configuration, or the platform. - A `stale` status indicates that although there may not be anything wrong,   we haven\\'t been able to update the status recently. This may indicate   a communications issue between Agilicus and the Connector containing the resource. \n     */\n    overall_status?: string;\n    /**\n     * A message pertaining to the last warning associated with the resource. This message is persistent in that it will remain when the status goes to `good`. \n     */\n    last_warning_message?: string;\n    session_stats?: ResourceSessionStats;\n}\n\nexport interface ResourceStats extends _ResourceStats {\n    _builtin_original?: _ResourceStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ResourceStatsImpl  implements _ResourceStats {\n    _builtin_original?: _ResourceStats = undefined;\n    public resource_id: string  | undefined ;\n    public metadata: ResourceStatsMetadata  | undefined ;\n    public overall_status: string  | undefined ;\n    public last_warning_message: string  | undefined ;\n    public session_stats: ResourceSessionStats  | undefined ;\n    constructor(base: _ResourceStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'resource_id') >= 0) {\n            this.resource_id = base.resource_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'overall_status') >= 0) {\n            this.overall_status = base.overall_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_warning_message') >= 0) {\n            this.last_warning_message = base.last_warning_message;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session_stats') >= 0) {\n            this.session_stats = base.session_stats;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newResourceStatsImpl(base: _ResourceStats): ResourceStatsImpl {\n    return new ResourceStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Information about a ResourceStats  object. Useful to understand when stats were published or updated. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ResourceStatsMetadata { \n    /**\n     * When the statistics were first created\n     */\n    readonly creation_time?: Date;\n    /**\n     * When the statistics were collected\n     */\n    collection_time: Date;\n    /**\n     * When the statistics were received for storage\n     */\n    readonly receipt_time?: Date;\n}\n\nexport interface ResourceStatsMetadata extends _ResourceStatsMetadata {\n    _builtin_original?: _ResourceStatsMetadata;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ResourceStatsMetadataImpl  implements _ResourceStatsMetadata {\n    _builtin_original?: _ResourceStatsMetadata = undefined;\n    public readonly creation_time: Date  | undefined ;\n    public collection_time: Date ;\n    public readonly receipt_time: Date  | undefined ;\n    constructor(base: _ResourceStatsMetadata) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'creation_time') >= 0) {\n            this.creation_time = base.creation_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'collection_time') >= 0) {\n            this.collection_time = base.collection_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'receipt_time') >= 0) {\n            this.receipt_time = base.receipt_time;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newResourceStatsMetadataImpl(base: _ResourceStatsMetadata): ResourceStatsMetadataImpl {\n    return new ResourceStatsMetadataImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A RoleConfig defines a role that is used to grant permission(s) to a UserIdentity. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RoleConfig { \n    /**\n     * A short descriptive name used to identify the role. Role names must be unique within a resource. \n     */\n    role_name: string;\n    /**\n     * If True, this role will be assigned to users granted access to this resource by default, (unless overridden). In the case of multiple roles defined for a resource, only a single role is permitted as default. If multiple roles are requested as default, the API will return 400. \n     */\n    _default?: boolean;\n    /**\n     * This role is builtin and is managed by the the system. \n     */\n    readonly builtin?: boolean;\n    /**\n     * A brief description of the role detailing the purpose of the role and what sort of permissions it grants. \n     */\n    description?: string;\n    included_roles?: Array<string>;\n}\n\nexport interface RoleConfig extends _RoleConfig {\n    _builtin_original?: _RoleConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RoleConfigImpl  implements _RoleConfig {\n    _builtin_original?: _RoleConfig = undefined;\n    public role_name: string ;\n    public _default: boolean  | undefined ;\n    public readonly builtin: boolean  | undefined ;\n    public description: string  | undefined ;\n    public included_roles: Array<string>  | undefined ;\n    constructor(base: _RoleConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'role_name') >= 0) {\n            this.role_name = base.role_name;\n        }\n        if (Object.keys(base).findIndex(key => key === '_default') >= 0) {\n            this._default = base._default;\n        }\n        if (Object.keys(base).findIndex(key => key === 'builtin') >= 0) {\n            this.builtin = base.builtin;\n        }\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'included_roles') >= 0) {\n            this.included_roles = base.included_roles;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newRoleConfigImpl(base: _RoleConfig): RoleConfigImpl {\n    return new RoleConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Resource URL by which a resource can be accessed from. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ResourceURL { \n    /**\n     * resource URL \n     */\n    url?: string;\n}\n\nexport interface ResourceURL extends _ResourceURL {\n    _builtin_original?: _ResourceURL;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ResourceURLImpl  implements _ResourceURL {\n    _builtin_original?: _ResourceURL = undefined;\n    public url: string  | undefined ;\n    constructor(base: _ResourceURL) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'url') >= 0) {\n            this.url = base.url;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newResourceURLImpl(base: _ResourceURL): ResourceURLImpl {\n    return new ResourceURLImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RoleConfig, RoleConfig, RoleConfigImpl, newRoleConfigImpl } from './roleConfig';\nimport { _Resource, Resource, ResourceImpl, newResourceImpl } from './resource';\nimport { _ResourceStats, ResourceStats, ResourceStatsImpl, newResourceStatsImpl } from './resourceStats';\nimport { _ResourceURL, ResourceURL, ResourceURLImpl, newResourceURLImpl } from './resourceURL';\n\n\n/**\n * The status object for a Resource. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ResourceStatus { \n    resource_stats?: ResourceStats;\n    /**\n     * The list of all roles that can be used to assign permissions to a user. This list includes builtin roles as well as the roles defined by this resource object in the ResourceSpec. \n     */\n    all_roles?: Array<RoleConfig>;\n    /**\n     * The list of all resources that are members of this resource. Note this property is not populated unless expand_member_resources=True is provided as a parameter. \n     */\n    resource_members?: Array<Resource>;\n    /**\n     * Externally accessible URLs for this resource. \n     */\n    resource_urls?: Array<ResourceURL>;\n    /**\n     * The ruleset label utilized for this resource. \n     */\n    ruleset_label?: string;\n}\n\nexport interface ResourceStatus extends _ResourceStatus {\n    _builtin_original?: _ResourceStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ResourceStatusImpl  implements _ResourceStatus {\n    _builtin_original?: _ResourceStatus = undefined;\n    public resource_stats: ResourceStats  | undefined ;\n    public all_roles: Array<RoleConfig>  | undefined ;\n    public resource_members: Array<Resource>  | undefined ;\n    public resource_urls: Array<ResourceURL>  | undefined ;\n    public ruleset_label: string  | undefined ;\n    constructor(base: _ResourceStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'resource_stats') >= 0) {\n            this.resource_stats = base.resource_stats;\n        }\n        if (Object.keys(base).findIndex(key => key === 'all_roles') >= 0) {\n            if (base.all_roles) {\n                this.all_roles = base.all_roles.map((original) => newRoleConfigImpl(original));\n            } else {\n                this.all_roles = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_members') >= 0) {\n            if (base.resource_members) {\n                this.resource_members = base.resource_members.map((original) => newResourceImpl(original));\n            } else {\n                this.resource_members = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_urls') >= 0) {\n            if (base.resource_urls) {\n                this.resource_urls = base.resource_urls.map((original) => newResourceURLImpl(original));\n            } else {\n                this.resource_urls = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'ruleset_label') >= 0) {\n            this.ruleset_label = base.ruleset_label;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.all_roles !== undefined) {\n            for (const item of this.all_roles) {\n                if (item !== undefined && (item as RoleConfigImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RoleConfigImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.resource_members !== undefined) {\n            for (const item of this.resource_members) {\n                if (item !== undefined && (item as ResourceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ResourceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.resource_urls !== undefined) {\n            for (const item of this.resource_urls) {\n                if (item !== undefined && (item as ResourceURLImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ResourceURLImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newResourceStatusImpl(base: _ResourceStatus): ResourceStatusImpl {\n    return new ResourceStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nexport type _ResourceTypeEnum = 'application' | 'fileshare' | 'application_service' | 'service_forwarder' | 'desktop' | 'group' | 'launcher' | 'ssh' | 'database';\nexport type ResourceTypeEnum = _ResourceTypeEnum\n\nexport type ResourceTypeEnumImpl = ResourceTypeEnum;\nexport const ResourceTypeEnum = {\n    application: 'application' as ResourceTypeEnum,\n    fileshare: 'fileshare' as ResourceTypeEnum,\n    application_service: 'application_service' as ResourceTypeEnum,\n    service_forwarder: 'service_forwarder' as ResourceTypeEnum,\n    desktop: 'desktop' as ResourceTypeEnum,\n    group: 'group' as ResourceTypeEnum,\n    launcher: 'launcher' as ResourceTypeEnum,\n    ssh: 'ssh' as ResourceTypeEnum,\n    database: 'database' as ResourceTypeEnum\n};\n\nexport function newResourceTypeEnumImpl(base: _ResourceTypeEnum): ResourceTypeEnumImpl {\n    return base;\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The generic information about a host. Typically used to point to more interesting information via another lookup.  The org_id is the ID of the organisation to which owns this host. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ResourceURLHostInfo { \n    /**\n     * Unique identifier\n     */\n    org_id: string;\n}\n\nexport interface ResourceURLHostInfo extends _ResourceURLHostInfo {\n    _builtin_original?: _ResourceURLHostInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ResourceURLHostInfoImpl  implements _ResourceURLHostInfo {\n    _builtin_original?: _ResourceURLHostInfo = undefined;\n    public org_id: string ;\n    constructor(base: _ResourceURLHostInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newResourceURLHostInfoImpl(base: _ResourceURLHostInfo): ResourceURLHostInfoImpl {\n    return new ResourceURLHostInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _IncludedRole, IncludedRole, IncludedRoleImpl, newIncludedRoleImpl } from './includedRole';\n\n\n/**\n * The specification of a `RoleV2`.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RoleSpec { \n    /**\n     * Unique identifier\n     */\n    app_id?: string;\n    /**\n     * A descriptive name of the role. This will be used to reference the role, in the context of the application, from other systems. Roles are case sensitive. \n     */\n    name: string;\n    /**\n     * A description of the role. The comments have no functional effect, but can help to clarify the purpose of a role when the name is not sufficient. \n     */\n    comments?: string;\n    /**\n     * A list of included rules for the role. This role will grant permissions for all rules associated directly with itself, and with its included roles. Note that the inclusion is recursive: a role will get the rules of roles it includes, and the roles that they include, and so on. The roles are included by ID \n     */\n    included?: Array<IncludedRole>;\n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n}\n\nexport interface RoleSpec extends _RoleSpec {\n    _builtin_original?: _RoleSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RoleSpecImpl  implements _RoleSpec {\n    _builtin_original?: _RoleSpec = undefined;\n    public app_id: string  | undefined ;\n    public name: string ;\n    public comments: string  | undefined ;\n    public included: Array<IncludedRole>  | undefined ;\n    public org_id: string  | undefined ;\n    constructor(base: _RoleSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'app_id') >= 0) {\n            this.app_id = base.app_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'comments') >= 0) {\n            this.comments = base.comments;\n        }\n        if (Object.keys(base).findIndex(key => key === 'included') >= 0) {\n            if (base.included) {\n                this.included = base.included.map((original) => newIncludedRoleImpl(original));\n            } else {\n                this.included = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.included !== undefined) {\n            for (const item of this.included) {\n                if (item !== undefined && (item as IncludedRoleImpl)._remove_builtin_extensions !== undefined) {\n                    (item as IncludedRoleImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newRoleSpecImpl(base: _RoleSpec): RoleSpecImpl {\n    return new RoleSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The main definition of a `RoleToRuleEntry`. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RoleToRuleEntrySpec { \n    /**\n     * Unique identifier\n     */\n    role_id?: string;\n    /**\n     * Unique identifier\n     */\n    rule_id?: string;\n    /**\n     * Unique identifier\n     */\n    app_id?: string;\n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n    /**\n     * Whether to include or exclude the rule in the role. If true, the rule is included. If false, it is excluded. \n     */\n    included?: boolean;\n}\n\nexport interface RoleToRuleEntrySpec extends _RoleToRuleEntrySpec {\n    _builtin_original?: _RoleToRuleEntrySpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RoleToRuleEntrySpecImpl  implements _RoleToRuleEntrySpec {\n    _builtin_original?: _RoleToRuleEntrySpec = undefined;\n    public role_id: string  | undefined ;\n    public rule_id: string  | undefined ;\n    public app_id: string  | undefined ;\n    public org_id: string  | undefined ;\n    public included: boolean  | undefined ;\n    constructor(base: _RoleToRuleEntrySpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'role_id') >= 0) {\n            this.role_id = base.role_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'rule_id') >= 0) {\n            this.rule_id = base.rule_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'app_id') >= 0) {\n            this.app_id = base.app_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'included') >= 0) {\n            this.included = base.included;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newRoleToRuleEntrySpecImpl(base: _RoleToRuleEntrySpec): RoleToRuleEntrySpecImpl {\n    return new RoleToRuleEntrySpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RoleConfig, RoleConfig, RoleConfigImpl, newRoleConfigImpl } from './roleConfig';\n\n\n/**\n * The roles configuration for a Resource. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RolesConfig { \n    /**\n     * The list of roles that can be used to assign permissions to a user.\n     */\n    roles?: Array<RoleConfig>;\n}\n\nexport interface RolesConfig extends _RolesConfig {\n    _builtin_original?: _RolesConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RolesConfigImpl  implements _RolesConfig {\n    _builtin_original?: _RolesConfig = undefined;\n    public roles: Array<RoleConfig>  | undefined ;\n    constructor(base: _RolesConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'roles') >= 0) {\n            if (base.roles) {\n                this.roles = base.roles.map((original) => newRoleConfigImpl(original));\n            } else {\n                this.roles = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.roles !== undefined) {\n            for (const item of this.roles) {\n                if (item !== undefined && (item as RoleConfigImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RoleConfigImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newRolesConfigImpl(base: _RolesConfig): RolesConfigImpl {\n    return new RolesConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Region, Region, RegionImpl, newRegionImpl } from './region';\nimport { _PointOfPresence, PointOfPresence, PointOfPresenceImpl, newPointOfPresenceImpl } from './pointOfPresence';\n\n\n/**\n * On organisation signup, a user will require a regional or pop domain relevant for their ip address location.  This request allows the user to provide their IP addresses, and the response provided will be possible pops or regions that could match. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RoutingRequest { \n    /**\n     * A list of ip addresses associated with the request\n     */\n    ip_addresses: Array<string>;\n    /**\n     * The list of point of presences that can support the ip addresses\n     */\n    readonly point_of_presences?: Array<PointOfPresence>;\n    /**\n     * The list of regions that can support the ip addresses\n     */\n    readonly regions?: Array<Region>;\n}\n\nexport interface RoutingRequest extends _RoutingRequest {\n    _builtin_original?: _RoutingRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RoutingRequestImpl  implements _RoutingRequest {\n    _builtin_original?: _RoutingRequest = undefined;\n    public ip_addresses: Array<string> ;\n    public readonly point_of_presences: Array<PointOfPresence>  | undefined ;\n    public readonly regions: Array<Region>  | undefined ;\n    constructor(base: _RoutingRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'ip_addresses') >= 0) {\n            this.ip_addresses = base.ip_addresses;\n        }\n        if (Object.keys(base).findIndex(key => key === 'point_of_presences') >= 0) {\n            if (base.point_of_presences) {\n                this.point_of_presences = base.point_of_presences.map((original) => newPointOfPresenceImpl(original));\n            } else {\n                this.point_of_presences = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'regions') >= 0) {\n            if (base.regions) {\n                this.regions = base.regions.map((original) => newRegionImpl(original));\n            } else {\n                this.regions = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.point_of_presences !== undefined) {\n            for (const item of this.point_of_presences) {\n                if (item !== undefined && (item as PointOfPresenceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as PointOfPresenceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.regions !== undefined) {\n            for (const item of this.regions) {\n                if (item !== undefined && (item as RegionImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RegionImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newRoutingRequestImpl(base: _RoutingRequest): RoutingRequestImpl {\n    return new RoutingRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * This condition is true if the request comes from an IP in one of the given subnets \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SourceSubnetCondition { \n    /**\n     * The discriminator for the condition. Set to source_subnet_condition.\n     */\n    condition_type: string;\n    /**\n     * The list of subnets to check\n     */\n    subnets: Array<string>;\n}\n\nexport interface SourceSubnetCondition extends _SourceSubnetCondition {\n    _builtin_original?: _SourceSubnetCondition;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SourceSubnetConditionImpl  implements _SourceSubnetCondition {\n    _builtin_original?: _SourceSubnetCondition = undefined;\n    public condition_type: string ;\n    public subnets: Array<string> ;\n    constructor(base: _SourceSubnetCondition) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'condition_type') >= 0) {\n            this.condition_type = base.condition_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'subnets') >= 0) {\n            this.subnets = base.subnets;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSourceSubnetConditionImpl(base: _SourceSubnetCondition): SourceSubnetConditionImpl {\n    return new SourceSubnetConditionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * This condition is true if the request satisfies at least one of the provided scopes. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ScopeCondition { \n    /**\n     * The discriminator for the condition\n     */\n    condition_type: string;\n    /**\n     * The list of scopes where if one is true, the condition will be true \n     */\n    scopes: Array<string>;\n}\n\nexport interface ScopeCondition extends _ScopeCondition {\n    _builtin_original?: _ScopeCondition;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ScopeConditionImpl  implements _ScopeCondition {\n    _builtin_original?: _ScopeCondition = undefined;\n    public condition_type: string ;\n    public scopes: Array<string> ;\n    constructor(base: _ScopeCondition) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'condition_type') >= 0) {\n            this.condition_type = base.condition_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'scopes') >= 0) {\n            this.scopes = base.scopes;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newScopeConditionImpl(base: _ScopeCondition): ScopeConditionImpl {\n    return new ScopeConditionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Compares against the ISO 3166-1 alpha-2 country code of the country in which the source of a request originated. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SourceISOCountryCodeCondition { \n    /**\n     * The discriminator for the condition\n     */\n    condition_type: string;\n    /**\n     * How to evaluate the variable against the value. - `in`: set membership. Checks that variable is in value, assuming value is a list. - `not_in`: set anti-membership. Checks that variable is in value, assuming value is a list. \n     */\n    operator: SourceISOCountryCodeCondition.OperatorEnum;\n    /**\n     * The set of country codes to check against\n     */\n    value: Array<string>;\n}\n\nexport interface SourceISOCountryCodeCondition extends _SourceISOCountryCodeCondition {\n    _builtin_original?: _SourceISOCountryCodeCondition;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SourceISOCountryCodeConditionImpl  implements _SourceISOCountryCodeCondition {\n    _builtin_original?: _SourceISOCountryCodeCondition = undefined;\n    public condition_type: string ;\n    public operator: SourceISOCountryCodeCondition.OperatorEnum ;\n    public value: Array<string> ;\n    constructor(base: _SourceISOCountryCodeCondition) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'condition_type') >= 0) {\n            this.condition_type = base.condition_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'operator') >= 0) {\n            this.operator = base.operator;\n        }\n        if (Object.keys(base).findIndex(key => key === 'value') >= 0) {\n            this.value = base.value;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace SourceISOCountryCodeCondition {\n    export type OperatorEnum = 'in' | 'not_in';\n    export const OperatorEnum = {\n        in: 'in' as OperatorEnum,\n        not_in: 'not_in' as OperatorEnum\n    };\n}\n\n\nexport function newSourceISOCountryCodeConditionImpl(base: _SourceISOCountryCodeCondition): SourceISOCountryCodeConditionImpl {\n    return new SourceISOCountryCodeConditionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _TemplatePath, TemplatePath, TemplatePathImpl, newTemplatePathImpl } from './templatePath';\nimport { _HostPrefixRuleCondition, HostPrefixRuleCondition, HostPrefixRuleConditionImpl, newHostPrefixRuleConditionImpl } from './hostPrefixRuleCondition';\nimport { _RuleCondition, RuleCondition, RuleConditionImpl, newRuleConditionImpl } from './ruleCondition';\nimport { _RuleQueryParameter, RuleQueryParameter, RuleQueryParameterImpl, newRuleQueryParameterImpl } from './ruleQueryParameter';\nimport { _NetworkProtocolCondition, NetworkProtocolCondition, NetworkProtocolConditionImpl, newNetworkProtocolConditionImpl } from './networkProtocolCondition';\nimport { _MaxMFAProofRuleCondition, MaxMFAProofRuleCondition, MaxMFAProofRuleConditionImpl, newMaxMFAProofRuleConditionImpl } from './maxMFAProofRuleCondition';\nimport { _SourceSubnetCondition, SourceSubnetCondition, SourceSubnetConditionImpl, newSourceSubnetConditionImpl } from './sourceSubnetCondition';\nimport { _RuleMatcherList, RuleMatcherList, RuleMatcherListImpl, newRuleMatcherListImpl } from './ruleMatcherList';\nimport { _RuleQueryBody, RuleQueryBody, RuleQueryBodyImpl, newRuleQueryBodyImpl } from './ruleQueryBody';\nimport { _ScopeCondition, ScopeCondition, ScopeConditionImpl, newScopeConditionImpl } from './scopeCondition';\nimport { _HttpRuleCondition, HttpRuleCondition, HttpRuleConditionImpl, newHttpRuleConditionImpl } from './httpRuleCondition';\nimport { _CompoundRuleCondition, CompoundRuleCondition, CompoundRuleConditionImpl, newCompoundRuleConditionImpl } from './compoundRuleCondition';\nimport { _SourceISOCountryCodeCondition, SourceISOCountryCodeCondition, SourceISOCountryCodeConditionImpl, newSourceISOCountryCodeConditionImpl } from './sourceISOCountryCodeCondition';\n\n\n/**\n * @type RuleConditionBase\n * @export\n */\nexport type RuleConditionBase = CompoundRuleCondition | HostPrefixRuleCondition | HttpRuleCondition | MaxMFAProofRuleCondition | NetworkProtocolCondition | ScopeCondition | SourceISOCountryCodeCondition | SourceSubnetCondition;\nexport type RuleConditionBaseImpl = CompoundRuleConditionImpl | HostPrefixRuleConditionImpl | HttpRuleConditionImpl | MaxMFAProofRuleConditionImpl | NetworkProtocolConditionImpl | ScopeConditionImpl | SourceISOCountryCodeConditionImpl | SourceSubnetConditionImpl;\nexport type _RuleConditionBase = _CompoundRuleCondition | _HostPrefixRuleCondition | _HttpRuleCondition | _MaxMFAProofRuleCondition | _NetworkProtocolCondition | _ScopeCondition | _SourceISOCountryCodeCondition | _SourceSubnetCondition;\n\nexport function newRuleConditionBaseImpl(base :_RuleConditionBase): _RuleConditionBase {\n    if (instanceOfCompoundRuleCondition(base)) {\n        return newCompoundRuleConditionImpl(base);\n    }\n    if (instanceOfHostPrefixRuleCondition(base)) {\n        return newHostPrefixRuleConditionImpl(base);\n    }\n    if (instanceOfHttpRuleCondition(base)) {\n        return newHttpRuleConditionImpl(base);\n    }\n    if (instanceOfMaxMFAProofRuleCondition(base)) {\n        return newMaxMFAProofRuleConditionImpl(base);\n    }\n    if (instanceOfNetworkProtocolCondition(base)) {\n        return newNetworkProtocolConditionImpl(base);\n    }\n    if (instanceOfScopeCondition(base)) {\n        return newScopeConditionImpl(base);\n    }\n    if (instanceOfSourceISOCountryCodeCondition(base)) {\n        return newSourceISOCountryCodeConditionImpl(base);\n    }\n    if (instanceOfSourceSubnetCondition(base)) {\n        return newSourceSubnetConditionImpl(base);\n    }\n\n    // Worse case return it without the builtin copies. The various bits of code handle\n    // it missing.\n    return base;\n}\n\nexport function instanceOfCompoundRuleCondition(object: any): object is CompoundRuleCondition {\n    return object.condition_type === \"compound_rule_condition\";\n}\nexport function instanceOfHostPrefixRuleCondition(object: any): object is HostPrefixRuleCondition {\n    return object.condition_type === \"host_prefix_rule_condition\";\n}\nexport function instanceOfHttpRuleCondition(object: any): object is HttpRuleCondition {\n    return object.condition_type === \"http_rule_condition\";\n}\nexport function instanceOfMaxMFAProofRuleCondition(object: any): object is MaxMFAProofRuleCondition {\n    return object.condition_type === \"mfa_rule_condition\";\n}\nexport function instanceOfNetworkProtocolCondition(object: any): object is NetworkProtocolCondition {\n    return object.condition_type === \"network_protocol_condition\";\n}\nexport function instanceOfScopeCondition(object: any): object is ScopeCondition {\n    return object.condition_type === \"scope_condition\";\n}\nexport function instanceOfSourceISOCountryCodeCondition(object: any): object is SourceISOCountryCodeCondition {\n    return object.condition_type === \"source_iso_country_code_condition\";\n}\nexport function instanceOfSourceSubnetCondition(object: any): object is SourceSubnetCondition {\n    return object.condition_type === \"source_subnet_condition\";\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * How to match an extracted value. This compares the value extracted by `extract_name` in the enclosing matcher against one of the provided match values in this object. The left hand side of binary operations comes from the enclosing matcher. The right hand side comes from `this`. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RuleMatchCriteria { \n    /**\n     * The operator used to evaluate this condition. `undefined` means that the value could not be extracted or was of the wrong type.  - `equals`: checks that enclosing.value == this.value. - `not_equals`: checks that enclosing.value != this.value. - `greater_than`: checks that enclosing.value > this.value. - `less_than`: checks that enclosing.value < this.value. - `in`: checks that enclosing.value is in this.value, assuming this.value is a list. - `not_in`: checks that enclosing.value is not in this.value, assuming this.value is a list. - `undefined`: checks that enclosing.value is undefined. \n     */\n    operator?: RuleMatchCriteria.OperatorEnum;\n    /**\n     * A literal value to match against\n     */\n    match_literal?: any | null;\n    /**\n     * The name of an extractor to match against. This allows for asserting that two values of a request are the same. \n     */\n    match_extractor?: string;\n}\n\nexport interface RuleMatchCriteria extends _RuleMatchCriteria {\n    _builtin_original?: _RuleMatchCriteria;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RuleMatchCriteriaImpl  implements _RuleMatchCriteria {\n    _builtin_original?: _RuleMatchCriteria = undefined;\n    public operator: RuleMatchCriteria.OperatorEnum  | undefined ;\n    public match_literal: any | null  | undefined ;\n    public match_extractor: string  | undefined ;\n    constructor(base: _RuleMatchCriteria) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'operator') >= 0) {\n            this.operator = base.operator;\n        }\n        if (Object.keys(base).findIndex(key => key === 'match_literal') >= 0) {\n            this.match_literal = base.match_literal;\n        }\n        if (Object.keys(base).findIndex(key => key === 'match_extractor') >= 0) {\n            this.match_extractor = base.match_extractor;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace RuleMatchCriteria {\n    export type OperatorEnum = 'equals' | 'not_equals' | 'greater_than' | 'less_than' | 'in' | 'not_in' | 'undefined';\n    export const OperatorEnum = {\n        equals: 'equals' as OperatorEnum,\n        not_equals: 'not_equals' as OperatorEnum,\n        greater_than: 'greater_than' as OperatorEnum,\n        less_than: 'less_than' as OperatorEnum,\n        in: 'in' as OperatorEnum,\n        not_in: 'not_in' as OperatorEnum,\n        undefined: 'undefined' as OperatorEnum\n    };\n}\n\n\nexport function newRuleMatchCriteriaImpl(base: _RuleMatchCriteria): RuleMatchCriteriaImpl {\n    return new RuleMatchCriteriaImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RuleMatchCriteria, RuleMatchCriteria, RuleMatchCriteriaImpl, newRuleMatchCriteriaImpl } from './ruleMatchCriteria';\n\n\n/**\n * An object describing a match requirement for a rule. A rule matcher matches a value extracted from a request using the criteria defined here. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RuleMatcher { \n    /**\n     * Specifies the extractor to use to get value to match against.\n     */\n    extractor_name: string;\n    /**\n     * Whether the match is inverted. If the match is inverted, then it evaluates to false if and only if its match criteria evaluate to true. This can be useful to exclude something from a rule. E.g. \\\"allow this path only if its first capture group does not equal 5\\\" \n     */\n    inverted: boolean;\n    /**\n     * How to join the criteria.  - `and`: All criteria must be true - `or`: One of the criteria must be true \n     */\n    join_operation: RuleMatcher.JoinOperationEnum;\n    /**\n     * The list of the criteria to match, joined using `join_operation`.\n     */\n    criteria?: Array<RuleMatchCriteria>;\n}\n\nexport interface RuleMatcher extends _RuleMatcher {\n    _builtin_original?: _RuleMatcher;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RuleMatcherImpl  implements _RuleMatcher {\n    _builtin_original?: _RuleMatcher = undefined;\n    public extractor_name: string ;\n    public inverted: boolean ;\n    public join_operation: RuleMatcher.JoinOperationEnum ;\n    public criteria: Array<RuleMatchCriteria>  | undefined ;\n    constructor(base: _RuleMatcher) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'extractor_name') >= 0) {\n            this.extractor_name = base.extractor_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'inverted') >= 0) {\n            this.inverted = base.inverted;\n        }\n        if (Object.keys(base).findIndex(key => key === 'join_operation') >= 0) {\n            this.join_operation = base.join_operation;\n        }\n        if (Object.keys(base).findIndex(key => key === 'criteria') >= 0) {\n            if (base.criteria) {\n                this.criteria = base.criteria.map((original) => newRuleMatchCriteriaImpl(original));\n            } else {\n                this.criteria = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.criteria !== undefined) {\n            for (const item of this.criteria) {\n                if (item !== undefined && (item as RuleMatchCriteriaImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RuleMatchCriteriaImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace RuleMatcher {\n    export type JoinOperationEnum = 'and' | 'or';\n    export const JoinOperationEnum = {\n        and: 'and' as JoinOperationEnum,\n        or: 'or' as JoinOperationEnum\n    };\n}\n\n\nexport function newRuleMatcherImpl(base: _RuleMatcher): RuleMatcherImpl {\n    return new RuleMatcherImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RuleMatcher, RuleMatcher, RuleMatcherImpl, newRuleMatcherImpl } from './ruleMatcher';\n\n\n/**\n * Extensions to the rule allowing for more complicated matching logic such as numerical comparisons. Each matcher must be matched in order for the rule to evaluate to true according to the `join_operation`. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RuleMatcherList { \n    /**\n     * The matchers to evaluate using the `join_operation`.\n     */\n    matchers: Array<RuleMatcher>;\n    /**\n     * How to join the matchers.  - `and`: All matchers must be true - `or`: One of the matchers must be true \n     */\n    join_operation: RuleMatcherList.JoinOperationEnum;\n}\n\nexport interface RuleMatcherList extends _RuleMatcherList {\n    _builtin_original?: _RuleMatcherList;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RuleMatcherListImpl  implements _RuleMatcherList {\n    _builtin_original?: _RuleMatcherList = undefined;\n    public matchers: Array<RuleMatcher> ;\n    public join_operation: RuleMatcherList.JoinOperationEnum ;\n    constructor(base: _RuleMatcherList) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'matchers') >= 0) {\n            if (base.matchers) {\n                this.matchers = base.matchers.map((original) => newRuleMatcherImpl(original));\n            } else {\n                this.matchers = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'join_operation') >= 0) {\n            this.join_operation = base.join_operation;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.matchers !== undefined) {\n            for (const item of this.matchers) {\n                if (item !== undefined && (item as RuleMatcherImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RuleMatcherImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace RuleMatcherList {\n    export type JoinOperationEnum = 'and' | 'or';\n    export const JoinOperationEnum = {\n        and: 'and' as JoinOperationEnum,\n        or: 'or' as JoinOperationEnum\n    };\n}\n\n\nexport function newRuleMatcherListImpl(base: _RuleMatcherList): RuleMatcherListImpl {\n    return new RuleMatcherListImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A unique name that refers to a specific constraint.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RuleQueryBodyJSON { \n    /**\n     * The name that refers to a specific constraint.\n     */\n    name: string;\n    /**\n     * The value that\\'s matched against and should be exactly the same to satisfy the rule.\n     */\n    exact_match?: string;\n    /**\n     * The type of the value that\\'s matched against.\n     */\n    match_type?: RuleQueryBodyJSON.MatchTypeEnum;\n    /**\n     * The json pointer path that system follows to store or retrieve data. The pointers are defined in (https://tools.ietf.org/html/rfc6901). \n     */\n    pointer?: string;\n}\n\nexport interface RuleQueryBodyJSON extends _RuleQueryBodyJSON {\n    _builtin_original?: _RuleQueryBodyJSON;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RuleQueryBodyJSONImpl  implements _RuleQueryBodyJSON {\n    _builtin_original?: _RuleQueryBodyJSON = undefined;\n    public name: string ;\n    public exact_match: string  | undefined ;\n    public match_type: RuleQueryBodyJSON.MatchTypeEnum  | undefined ;\n    public pointer: string  | undefined ;\n    constructor(base: _RuleQueryBodyJSON) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'exact_match') >= 0) {\n            this.exact_match = base.exact_match;\n        }\n        if (Object.keys(base).findIndex(key => key === 'match_type') >= 0) {\n            this.match_type = base.match_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'pointer') >= 0) {\n            this.pointer = base.pointer;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace RuleQueryBodyJSON {\n    export type MatchTypeEnum = 'string';\n    export const MatchTypeEnum = {\n        string: 'string' as MatchTypeEnum\n    };\n}\n\n\nexport function newRuleQueryBodyJSONImpl(base: _RuleQueryBodyJSON): RuleQueryBodyJSONImpl {\n    return new RuleQueryBodyJSONImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RuleQueryBodyJSON, RuleQueryBodyJSON, RuleQueryBodyJSONImpl, newRuleQueryBodyJSONImpl } from './ruleQueryBodyJSON';\n\n\n/**\n * Body describes constraints on the request. It helps to prevent users from modifying special fields(e.g. userid) in the body to gain extra access rights in the system. The format of the body(e.g. JSON) is specified below with the restriction. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RuleQueryBody { \n    /**\n     * Rule query body array\n     */\n    json?: Array<RuleQueryBodyJSON>;\n}\n\nexport interface RuleQueryBody extends _RuleQueryBody {\n    _builtin_original?: _RuleQueryBody;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RuleQueryBodyImpl  implements _RuleQueryBody {\n    _builtin_original?: _RuleQueryBody = undefined;\n    public json: Array<RuleQueryBodyJSON>  | undefined ;\n    constructor(base: _RuleQueryBody) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'json') >= 0) {\n            if (base.json) {\n                this.json = base.json.map((original) => newRuleQueryBodyJSONImpl(original));\n            } else {\n                this.json = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.json !== undefined) {\n            for (const item of this.json) {\n                if (item !== undefined && (item as RuleQueryBodyJSONImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RuleQueryBodyJSONImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newRuleQueryBodyImpl(base: _RuleQueryBody): RuleQueryBodyImpl {\n    return new RuleQueryBodyImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * When this rule applies. * Rules scoped to `anyone` apply regardless of whether the user is authenticated. * Rules scoped to `assigned_to_user` apply only to users who have been assigned the rule,   e.g. via  role. * Rules scoped to `any_known_user` apply to any user who has authenticated with the   system. * Rules scoped to `any_app_user` apply to any user who has a role in the owning   application. \n */\nexport type _RuleScopeEnum = 'anyone' | 'any_known_user' | 'any_app_user' | 'assigned_to_user';\nexport type RuleScopeEnum = _RuleScopeEnum\n\nexport type RuleScopeEnumImpl = RuleScopeEnum;\nexport const RuleScopeEnum = {\n    anyone: 'anyone' as RuleScopeEnum,\n    any_known_user: 'any_known_user' as RuleScopeEnum,\n    any_app_user: 'any_app_user' as RuleScopeEnum,\n    assigned_to_user: 'assigned_to_user' as RuleScopeEnum\n};\n\nexport function newRuleScopeEnumImpl(base: _RuleScopeEnum): RuleScopeEnumImpl {\n    return base;\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An association object linking a parent rule to a child rule. This object assocates the parent rule to a child rule along with a priority describing how the child rule should be evaluated in relation to other rules. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RuleSetComponent { \n    /**\n     * The name of the parent rule. The rule must exist in the rules_config of the resource. \n     */\n    parent_rule_name: string;\n    /**\n     * The name of the child rule. The rule must exist in the rules_config of the resource. \n     */\n    child_rule_name: string;\n    /**\n     * The priority of the child rule relative to sibling nodes of a RuleSet. Rules are evaluated in order of higher priority number to lower priority number. \n     */\n    priority: number;\n}\n\nexport interface RuleSetComponent extends _RuleSetComponent {\n    _builtin_original?: _RuleSetComponent;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RuleSetComponentImpl  implements _RuleSetComponent {\n    _builtin_original?: _RuleSetComponent = undefined;\n    public parent_rule_name: string ;\n    public child_rule_name: string ;\n    public priority: number ;\n    constructor(base: _RuleSetComponent) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'parent_rule_name') >= 0) {\n            this.parent_rule_name = base.parent_rule_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'child_rule_name') >= 0) {\n            this.child_rule_name = base.child_rule_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'priority') >= 0) {\n            this.priority = base.priority;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newRuleSetComponentImpl(base: _RuleSetComponent): RuleSetComponentImpl {\n    return new RuleSetComponentImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RuleConfig, RuleConfig, RuleConfigImpl, newRuleConfigImpl } from './ruleConfig';\n\n\n/**\n * A node within a RuleSet. This is essentially the dereferenced version of a RuleSetComponent. That is, it contains the child referred to by name of a RuleSetComponent and its priority. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RuleSetNode { \n    rule: RuleConfig;\n    /**\n     * The priority of the rule relative to sibling rules in the RuleSet. Rules are evaluated in order of higher priority number to lower priority number. \n     */\n    priority: number;\n}\n\nexport interface RuleSetNode extends _RuleSetNode {\n    _builtin_original?: _RuleSetNode;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RuleSetNodeImpl  implements _RuleSetNode {\n    _builtin_original?: _RuleSetNode = undefined;\n    public rule: RuleConfig ;\n    public priority: number ;\n    constructor(base: _RuleSetNode) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'rule') >= 0) {\n            this.rule = base.rule;\n        }\n        if (Object.keys(base).findIndex(key => key === 'priority') >= 0) {\n            this.priority = base.priority;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newRuleSetNodeImpl(base: _RuleSetNode): RuleSetNodeImpl {\n    return new RuleSetNodeImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RuleScopeEnum, RuleScopeEnum, RuleScopeEnumImpl, newRuleScopeEnumImpl } from './ruleScopeEnum';\nimport { _HttpRule, HttpRule, HttpRuleImpl, newHttpRuleImpl } from './httpRule';\n\n\n/**\n * The definition of a rule. Contains all information that controls how the rule behaves. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RuleSpec { \n    /**\n     * Unique identifier\n     */\n    app_id?: string;\n    /**\n     * A description of the rule. The comments have no functional effect, but can help to clarify the purpose of a rule when the name is not sufficient. \n     */\n    comments?: string;\n    condition?: HttpRule;\n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n    scope?: RuleScopeEnum;\n}\n\nexport interface RuleSpec extends _RuleSpec {\n    _builtin_original?: _RuleSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RuleSpecImpl  implements _RuleSpec {\n    _builtin_original?: _RuleSpec = undefined;\n    public app_id: string  | undefined ;\n    public comments: string  | undefined ;\n    public condition: HttpRule  | undefined ;\n    public org_id: string  | undefined ;\n    public scope: RuleScopeEnum  | undefined ;\n    constructor(base: _RuleSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'app_id') >= 0) {\n            this.app_id = base.app_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'comments') >= 0) {\n            this.comments = base.comments;\n        }\n        if (Object.keys(base).findIndex(key => key === 'condition') >= 0) {\n            this.condition = base.condition;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'scope') >= 0) {\n            this.scope = base.scope;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newRuleSpecImpl(base: _RuleSpec): RuleSpecImpl {\n    return new RuleSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RuleSetComponent, RuleSetComponent, RuleSetComponentImpl, newRuleSetComponentImpl } from './ruleSetComponent';\nimport { _RuleConfig, RuleConfig, RuleConfigImpl, newRuleConfigImpl } from './ruleConfig';\n\n\n/**\n * The rules configuration for a Resource. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RulesConfig { \n    /**\n     * The list of rules associated with this resource.\n     */\n    rules?: Array<RuleConfig>;\n    /**\n     * A list of RuleSetComponents which build a forest of RuleSet trees. Each node of a RuleSet contains a single RuleConfig, and a list of child RuleSets. RuleSets evaluate top down, using a preorder depth first search. Child rules will only be evaluated if the containing rule\\'s condition evaluates to true. At that point, they will be evaluated in priority order. Actions taken by child rules will be evaluated in order, after any actions added by the containing rule.  All child rules of a parent rule are evaluated regardless of whether or not they are assigned to a role applicable to the evaluation context. For example, if a user has role X, rule A is in role X, and has child rule B which is in role Y, evaluation of rule A will also evaluate rule B (if necessary), despite rule B not independently being part of role X.  If a containing rule and a child rule have roles in common, they will only be evaluated once in the context of the outermost containing role. This allows rules to be applied to roles independently when necessary, while deterministically defining the rule evaluation.  A RuleSet MUST be a tree. Thus, there can be no cycles within the structure: no rule may refer to itself, and no child rule can refer to an ancestor rule. \n     */\n    rule_set_components?: Array<RuleSetComponent>;\n}\n\nexport interface RulesConfig extends _RulesConfig {\n    _builtin_original?: _RulesConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RulesConfigImpl  implements _RulesConfig {\n    _builtin_original?: _RulesConfig = undefined;\n    public rules: Array<RuleConfig>  | undefined ;\n    public rule_set_components: Array<RuleSetComponent>  | undefined ;\n    constructor(base: _RulesConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'rules') >= 0) {\n            if (base.rules) {\n                this.rules = base.rules.map((original) => newRuleConfigImpl(original));\n            } else {\n                this.rules = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'rule_set_components') >= 0) {\n            if (base.rule_set_components) {\n                this.rule_set_components = base.rule_set_components.map((original) => newRuleSetComponentImpl(original));\n            } else {\n                this.rule_set_components = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.rules !== undefined) {\n            for (const item of this.rules) {\n                if (item !== undefined && (item as RuleConfigImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RuleConfigImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.rule_set_components !== undefined) {\n            for (const item of this.rule_set_components) {\n                if (item !== undefined && (item as RuleSetComponentImpl)._remove_builtin_extensions !== undefined) {\n                    (item as RuleSetComponentImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newRulesConfigImpl(base: _RulesConfig): RulesConfigImpl {\n    return new RulesConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The details about the current running status of an instance. This information allows a user to get information about the running software in the Agilicus Portal. For example, you can check an upgrades status, check for downed instances or troubleshoot poor performance. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _RuntimeStatus { \n    /**\n     * The status of the running components. - A `good` status means that no action is neccessary on this environment - A `warn` status means that there is an issue that should be dealt with   Examples include a rollout failing or crashing containers - A `down` status indicates that there is a service accessibility problem   that should be dealt with as soon as possible. This could   mean that there were multiple failed rollouts, containers are unstable,   access to a neccessary service is down or other problems. - A `stale` status indicates that although there may not be anything wrong,   we haven\\'t been able to update the status recently. This may indicate   an issue with the platform - A `degraded` status indicates that the service is operational but running   in non-redundant mode. Note that this alarm would only be valid for   a service that supports redundancy. \n     */\n    overall_status?: RuntimeStatus.OverallStatusEnum;\n    /**\n     * The number of current running replicas. 2 is redundant, 1 could indicate error handling, 0 is down. \n     */\n    running_replicas?: number;\n    /**\n     * The error in running the current instance. Common errors include CrashLoopBackoff, ContainerPullError, ConfigError. If there is no error description, this will be empty. \n     */\n    error_message?: string;\n    /**\n     * How many times a container has restarted across all replicas of this instance. A non-zero number might indicate some intermittent error that is handled by the Agilicus system. A large number of errors could indicate problems in the application \n     */\n    restarts?: number;\n    /**\n     * The current number of CPU cores used by all the containers for the instance. A high number eg 1.00 may indicate performance problems as a container is unable to service all requests \n     */\n    cpu?: number;\n    /**\n     * The amount of RAM used by all containers used for the instance in MiB \n     */\n    memory?: number;\n    /**\n     * The last time any change was applied to the running containers. This can be used to indicate if the system has \\'picked up\\' a recent change that was made \n     */\n    last_apply_time?: Date;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n    /**\n     * The container tag identifies what container is currently running in this instance. This could be different than the configured image if there was an error upgrading. Although relatively rare in practice, the same image tag could have been pushed with many different images, when the container is started it will pull the latest version. See running_hash for more information \n     */\n    running_image?: string;\n    /**\n     * The container hash of What versions users see when they browse to the site. If a image tag has been pushed multiple times, ie for hotfixes then this could be used to identify exactly what software is running \n     */\n    running_hash?: string;\n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n}\n\nexport interface RuntimeStatus extends _RuntimeStatus {\n    _builtin_original?: _RuntimeStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class RuntimeStatusImpl  implements _RuntimeStatus {\n    _builtin_original?: _RuntimeStatus = undefined;\n    public overall_status: RuntimeStatus.OverallStatusEnum  | undefined ;\n    public running_replicas: number  | undefined ;\n    public error_message: string  | undefined ;\n    public restarts: number  | undefined ;\n    public cpu: number  | undefined ;\n    public memory: number  | undefined ;\n    public last_apply_time: Date  | undefined ;\n    public readonly updated: Date  | undefined ;\n    public running_image: string  | undefined ;\n    public running_hash: string  | undefined ;\n    public org_id: string  | undefined ;\n    constructor(base: _RuntimeStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'overall_status') >= 0) {\n            this.overall_status = base.overall_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'running_replicas') >= 0) {\n            this.running_replicas = base.running_replicas;\n        }\n        if (Object.keys(base).findIndex(key => key === 'error_message') >= 0) {\n            this.error_message = base.error_message;\n        }\n        if (Object.keys(base).findIndex(key => key === 'restarts') >= 0) {\n            this.restarts = base.restarts;\n        }\n        if (Object.keys(base).findIndex(key => key === 'cpu') >= 0) {\n            this.cpu = base.cpu;\n        }\n        if (Object.keys(base).findIndex(key => key === 'memory') >= 0) {\n            this.memory = base.memory;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_apply_time') >= 0) {\n            this.last_apply_time = base.last_apply_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n        if (Object.keys(base).findIndex(key => key === 'running_image') >= 0) {\n            this.running_image = base.running_image;\n        }\n        if (Object.keys(base).findIndex(key => key === 'running_hash') >= 0) {\n            this.running_hash = base.running_hash;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace RuntimeStatus {\n    export type OverallStatusEnum = 'good' | 'warn' | 'down' | 'stale' | 'degraded';\n    export const OverallStatusEnum = {\n        good: 'good' as OverallStatusEnum,\n        warn: 'warn' as OverallStatusEnum,\n        down: 'down' as OverallStatusEnum,\n        stale: 'stale' as OverallStatusEnum,\n        degraded: 'degraded' as OverallStatusEnum\n    };\n}\n\n\nexport function newRuntimeStatusImpl(base: _RuntimeStatus): RuntimeStatusImpl {\n    return new RuntimeStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _NetworkServiceConfig, NetworkServiceConfig, NetworkServiceConfigImpl, newNetworkServiceConfigImpl } from './networkServiceConfig';\nimport { _ResourceConfig, ResourceConfig, ResourceConfigImpl, newResourceConfigImpl } from './resourceConfig';\n\n\n/**\n * The configurable properties of a SSHResource. A SSHResource is also a NetworkResource, so it must have a unique name across all NetworkResources. Note that the SSHResource must be associated with a Connector (via `connector_id`) in order for users to access it. If `connector_id` is empty, then the SSHResource cannot be accessed. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SSHResourceSpec { \n    /**\n     * The name of the SSHResource. This uniquely identifies the SSHResource within the organisation. \n     */\n    name: string;\n    /**\n     * The hostname or IP of the SSHResource. A terminal emulator will proxy requests from the machine through to this address via the Connector associated with this gateway using `connector_id`. \n     */\n    address: string;\n    /**\n     * When configured, will generate appropriate ssh configuration. For example, openssh configuration using username would appear as:    Host name       User username \n     */\n    username?: string | null;\n    config?: NetworkServiceConfig;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * Unique identifier\n     */\n    connector_id?: string;\n    /**\n     * A human readable slug to identify a resource and that is rfc1035 label compliant. The length has been restricted to 20 characters such that this name can be concatenated with other names or slugs. A slug is readOnly as it is generated by the backend resource. \n     */\n    name_slug?: string;\n    resource_config?: ResourceConfig;\n}\n\nexport interface SSHResourceSpec extends _SSHResourceSpec {\n    _builtin_original?: _SSHResourceSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SSHResourceSpecImpl  implements _SSHResourceSpec {\n    _builtin_original?: _SSHResourceSpec = undefined;\n    public name: string ;\n    public address: string ;\n    public username: string | null  | undefined ;\n    public config: NetworkServiceConfig  | undefined ;\n    public org_id: string ;\n    public connector_id: string  | undefined ;\n    public name_slug: string  | undefined ;\n    public resource_config: ResourceConfig  | undefined ;\n    constructor(base: _SSHResourceSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'address') >= 0) {\n            this.address = base.address;\n        }\n        if (Object.keys(base).findIndex(key => key === 'username') >= 0) {\n            this.username = base.username;\n        }\n        if (Object.keys(base).findIndex(key => key === 'config') >= 0) {\n            this.config = base.config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_id') >= 0) {\n            this.connector_id = base.connector_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name_slug') >= 0) {\n            this.name_slug = base.name_slug;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_config') >= 0) {\n            this.resource_config = base.resource_config;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSSHResourceSpecImpl(base: _SSHResourceSpec): SSHResourceSpecImpl {\n    return new SSHResourceSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ResourceStatsMetadata, ResourceStatsMetadata, ResourceStatsMetadataImpl, newResourceStatsMetadataImpl } from './resourceStatsMetadata';\nimport { _ResourceSessionStats, ResourceSessionStats, ResourceSessionStatsImpl, newResourceSessionStatsImpl } from './resourceSessionStats';\nimport { _ResourceStats, ResourceStats, ResourceStatsImpl, newResourceStatsImpl } from './resourceStats';\n\n\n/**\n * Stats for a SSHResource, including basic resource stats. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SSHResourceStats { \n    /**\n     * The unique ID of the resource. The id is provided here so that a list of resource stats can be POSTed in a single request. \n     */\n    resource_id?: string;\n    metadata?: ResourceStatsMetadata;\n    /**\n     * The summary status of the Resource. - A `good` status means that no action is neccessary on this Resource - A `warn` status means that there is an issue that should be dealt with   Examples include a forwarder resource that cannot bind to the provisioned port (eg. permission   issue binding to port 80) - A `down` status indicates that there is a service accessibility problem   that should be dealt with as soon as possible. This could mean that there is a   problem with the Resource\\'s configuration, or the platform. - A `stale` status indicates that although there may not be anything wrong,   we haven\\'t been able to update the status recently. This may indicate   a communications issue between Agilicus and the Connector containing the resource. \n     */\n    overall_status?: string;\n    /**\n     * A message pertaining to the last warning associated with the resource. This message is persistent in that it will remain when the status goes to `good`. \n     */\n    last_warning_message?: string;\n    session_stats?: ResourceSessionStats;\n}\n\nexport interface SSHResourceStats extends _SSHResourceStats {\n    _builtin_original?: _SSHResourceStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SSHResourceStatsImpl  implements _SSHResourceStats {\n    _builtin_original?: _SSHResourceStats = undefined;\n    public resource_id: string  | undefined ;\n    public metadata: ResourceStatsMetadata  | undefined ;\n    public overall_status: string  | undefined ;\n    public last_warning_message: string  | undefined ;\n    public session_stats: ResourceSessionStats  | undefined ;\n    constructor(base: _SSHResourceStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'resource_id') >= 0) {\n            this.resource_id = base.resource_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'metadata') >= 0) {\n            this.metadata = base.metadata;\n        }\n        if (Object.keys(base).findIndex(key => key === 'overall_status') >= 0) {\n            this.overall_status = base.overall_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_warning_message') >= 0) {\n            this.last_warning_message = base.last_warning_message;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session_stats') >= 0) {\n            this.session_stats = base.session_stats;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSSHResourceStatsImpl(base: _SSHResourceStats): SSHResourceStatsImpl {\n    return new SSHResourceStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _SSHResourceStats, SSHResourceStats, SSHResourceStatsImpl, newSSHResourceStatsImpl } from './sSHResourceStats';\n\n\n/**\n * Derived, read-only properties of a SSHResource. Use these to determine how to interact with a DesktopResource, or to see its current state. If you have not assigned the SSHResource to a Connector, then some of its status will not be availble. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SSHResourceStatus { \n    /**\n     * The base uri at which to access the gateway for this SSHResource. \n     */\n    gateway_uri?: string;\n    /**\n     * The URI by which this resource can be directly accessed. Depending on the type of connector associated with the resource, the URI could be public or internal to the Agilicus infrastructure. In both cases, valid credentials proving permission to access this service are necessary to access the service. If this field is empty, then it cannot be accessed directly. \n     */\n    connection_uri?: string;\n    stats?: SSHResourceStats;\n}\n\nexport interface SSHResourceStatus extends _SSHResourceStatus {\n    _builtin_original?: _SSHResourceStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SSHResourceStatusImpl  implements _SSHResourceStatus {\n    _builtin_original?: _SSHResourceStatus = undefined;\n    public gateway_uri: string  | undefined ;\n    public connection_uri: string  | undefined ;\n    public stats: SSHResourceStats  | undefined ;\n    constructor(base: _SSHResourceStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'gateway_uri') >= 0) {\n            this.gateway_uri = base.gateway_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connection_uri') >= 0) {\n            this.connection_uri = base.connection_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'stats') >= 0) {\n            this.stats = base.stats;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSSHResourceStatusImpl(base: _SSHResourceStatus): SSHResourceStatusImpl {\n    return new SSHResourceStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A connector establishes a tunnel between the Agilicus infrastructure and the Secure Agent running on site. Its configuration controls how that link is established, how many connections are maintained and so on. Typically a connector corresponds to an Application running in the Agilicus infrastructure which provides the ingress side of the Secure Agent tunnel. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SecureAgentConnector { \n    /**\n     * The maximum number of connections to maintain to the cluster when stable. Note that this value may be exceeded during times of reconfiguration. A value of zero means that the connector is effectively unused by this Secure Agent. \n     */\n    max_number_connections: number;\n    /**\n     * Overrides the default URI used to connect to this connector. This can be used to point the Secure Agent somewhere other than the default. \n     */\n    connection_uri?: string;\n}\n\nexport interface SecureAgentConnector extends _SecureAgentConnector {\n    _builtin_original?: _SecureAgentConnector;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SecureAgentConnectorImpl  implements _SecureAgentConnector {\n    _builtin_original?: _SecureAgentConnector = undefined;\n    public max_number_connections: number ;\n    public connection_uri: string  | undefined ;\n    constructor(base: _SecureAgentConnector) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'max_number_connections') >= 0) {\n            this.max_number_connections = base.max_number_connections;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connection_uri') >= 0) {\n            this.connection_uri = base.connection_uri;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSecureAgentConnectorImpl(base: _SecureAgentConnector): SecureAgentConnectorImpl {\n    return new SecureAgentConnectorImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Information necessary for the Secure Agent to connector a given connector. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SecureAgentConnectorInfo { \n    /**\n     * The URI used to establish a connection to the connector.\n     */\n    connection_uri: string;\n    /**\n     * The maximum number of connections to maintain to the cluster when stable. Note that this value may be exceeded during times of reconfiguration. A value of zero means that the connector is effectively unused by this Secure Agent. \n     */\n    max_number_connections: number;\n}\n\nexport interface SecureAgentConnectorInfo extends _SecureAgentConnectorInfo {\n    _builtin_original?: _SecureAgentConnectorInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SecureAgentConnectorInfoImpl  implements _SecureAgentConnectorInfo {\n    _builtin_original?: _SecureAgentConnectorInfo = undefined;\n    public connection_uri: string ;\n    public max_number_connections: number ;\n    constructor(base: _SecureAgentConnectorInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'connection_uri') >= 0) {\n            this.connection_uri = base.connection_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'max_number_connections') >= 0) {\n            this.max_number_connections = base.max_number_connections;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSecureAgentConnectorInfoImpl(base: _SecureAgentConnectorInfo): SecureAgentConnectorInfoImpl {\n    return new SecureAgentConnectorInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _SecureAgentConnector, SecureAgentConnector, SecureAgentConnectorImpl, newSecureAgentConnectorImpl } from './secureAgentConnector';\n\n\n/**\n * The specification of the secure agent\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SecureAgentSpec { \n    /**\n     * A descriptive name for the secure agent\n     */\n    name?: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * The list of application service ids associated with this secure agent\n     */\n    application_service_ids?: Array<string>;\n    /**\n     * The list of connectors this agent uses to establish tunnels with the infrastructure \n     */\n    connectors?: Array<SecureAgentConnector>;\n}\n\nexport interface SecureAgentSpec extends _SecureAgentSpec {\n    _builtin_original?: _SecureAgentSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SecureAgentSpecImpl  implements _SecureAgentSpec {\n    _builtin_original?: _SecureAgentSpec = undefined;\n    public name: string  | undefined ;\n    public org_id: string ;\n    public application_service_ids: Array<string>  | undefined ;\n    public connectors: Array<SecureAgentConnector>  | undefined ;\n    constructor(base: _SecureAgentSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_service_ids') >= 0) {\n            this.application_service_ids = base.application_service_ids;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connectors') >= 0) {\n            if (base.connectors) {\n                this.connectors = base.connectors.map((original) => newSecureAgentConnectorImpl(original));\n            } else {\n                this.connectors = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.connectors !== undefined) {\n            for (const item of this.connectors) {\n                if (item !== undefined && (item as SecureAgentConnectorImpl)._remove_builtin_extensions !== undefined) {\n                    (item as SecureAgentConnectorImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newSecureAgentSpecImpl(base: _SecureAgentSpec): SecureAgentSpecImpl {\n    return new SecureAgentSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _SecureAgentConnectorInfo, SecureAgentConnectorInfo, SecureAgentConnectorInfoImpl, newSecureAgentConnectorInfoImpl } from './secureAgentConnectorInfo';\nimport { _ApplicationService, ApplicationService, ApplicationServiceImpl, newApplicationServiceImpl } from './applicationService';\n\n\n/**\n * Status information pertaining to the secure agent\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SecureAgentStatus { \n    /**\n     * The list of application services associated with this secure agent\n     */\n    application_services?: Array<ApplicationService>;\n    /**\n     * Each item in this list informs the agent of how to connect to a connector in the agilicus infrastructure. \n     */\n    connector_info?: Array<SecureAgentConnectorInfo>;\n}\n\nexport interface SecureAgentStatus extends _SecureAgentStatus {\n    _builtin_original?: _SecureAgentStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SecureAgentStatusImpl  implements _SecureAgentStatus {\n    _builtin_original?: _SecureAgentStatus = undefined;\n    public application_services: Array<ApplicationService>  | undefined ;\n    public connector_info: Array<SecureAgentConnectorInfo>  | undefined ;\n    constructor(base: _SecureAgentStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'application_services') >= 0) {\n            if (base.application_services) {\n                this.application_services = base.application_services.map((original) => newApplicationServiceImpl(original));\n            } else {\n                this.application_services = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_info') >= 0) {\n            if (base.connector_info) {\n                this.connector_info = base.connector_info.map((original) => newSecureAgentConnectorInfoImpl(original));\n            } else {\n                this.connector_info = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.application_services !== undefined) {\n            for (const item of this.application_services) {\n                if (item !== undefined && (item as ApplicationServiceImpl)._remove_builtin_extensions !== undefined) {\n                    (item as ApplicationServiceImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.connector_info !== undefined) {\n            for (const item of this.connector_info) {\n                if (item !== undefined && (item as SecureAgentConnectorInfoImpl)._remove_builtin_extensions !== undefined) {\n                    (item as SecureAgentConnectorInfoImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newSecureAgentStatusImpl(base: _SecureAgentStatus): SecureAgentStatusImpl {\n    return new SecureAgentStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Request body for reseting an issuer\\'s service account\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ServiceAccountResetBody { \n    /**\n     * Unique identifier\n     */\n    issuer_id: string;\n    /**\n     * ID of the organisation which owns the issuer\n     */\n    org_id: string;\n}\n\nexport interface ServiceAccountResetBody extends _ServiceAccountResetBody {\n    _builtin_original?: _ServiceAccountResetBody;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ServiceAccountResetBodyImpl  implements _ServiceAccountResetBody {\n    _builtin_original?: _ServiceAccountResetBody = undefined;\n    public issuer_id: string ;\n    public org_id: string ;\n    constructor(base: _ServiceAccountResetBody) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'issuer_id') >= 0) {\n            this.issuer_id = base.issuer_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newServiceAccountResetBodyImpl(base: _ServiceAccountResetBody): ServiceAccountResetBodyImpl {\n    return new ServiceAccountResetBodyImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _InheritableUserConfig, InheritableUserConfig, InheritableUserConfigImpl, newInheritableUserConfigImpl } from './inheritableUserConfig';\n\n\n/**\n * The configuration object for a service account. A service account has the same properties of a user.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ServiceAccountSpec { \n    /**\n     * The name of the service account. This will be used as part of the generated email for the service account. Note the service account\\'s email will not be updated after it has been created. \n     */\n    name: string;\n    /**\n     * Enable/Disable a service account. This will enable/disable the service account user associated with this account.\n     */\n    enabled?: boolean;\n    /**\n     * The unique id of the Organisation to which this service account belongs to. This restricts the possible values for allowed_sub_orgs \n     */\n    org_id: string;\n    /**\n     * The list of suborgs that this service account can be used in. To enable this service account in a sub organisation, activate this service account\\'s user in the organisation.\n     */\n    allowed_sub_orgs?: Array<string>;\n    inheritable_config?: InheritableUserConfig;\n    /**\n     * The unique id of the object that is using this service account. This protects the service account from being deleted inadvertently unless the service account is explicitly deleted by utilizing the delete optional arguments that provide the protected_by_id and protected_by_type. \n     */\n    protected_by_id?: string | null;\n    /**\n     * The protected_by_id object type that is using this service account. This protects the service account from being deleted inadvertently unless the service account is explicitly deleted by utilizing the delete optional arguments that provide the proteted_by_id and protected_by_type. \n     */\n    protected_by_type?: string | null;\n}\n\nexport interface ServiceAccountSpec extends _ServiceAccountSpec {\n    _builtin_original?: _ServiceAccountSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ServiceAccountSpecImpl  implements _ServiceAccountSpec {\n    _builtin_original?: _ServiceAccountSpec = undefined;\n    public name: string ;\n    public enabled: boolean  | undefined ;\n    public org_id: string ;\n    public allowed_sub_orgs: Array<string>  | undefined ;\n    public inheritable_config: InheritableUserConfig  | undefined ;\n    public protected_by_id: string | null  | undefined ;\n    public protected_by_type: string | null  | undefined ;\n    constructor(base: _ServiceAccountSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'allowed_sub_orgs') >= 0) {\n            this.allowed_sub_orgs = base.allowed_sub_orgs;\n        }\n        if (Object.keys(base).findIndex(key => key === 'inheritable_config') >= 0) {\n            this.inheritable_config = base.inheritable_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'protected_by_id') >= 0) {\n            this.protected_by_id = base.protected_by_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'protected_by_type') >= 0) {\n            this.protected_by_type = base.protected_by_type;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newServiceAccountSpecImpl(base: _ServiceAccountSpec): ServiceAccountSpecImpl {\n    return new ServiceAccountSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserIdentity, UserIdentity, UserIdentityImpl, newUserIdentityImpl } from './userIdentity';\n\n\n/**\n * The current status of the service account. The user field contains the user object corresponding to this service account. Users are then modified using the Users API.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ServiceAccountStatus { \n    user?: UserIdentity;\n}\n\nexport interface ServiceAccountStatus extends _ServiceAccountStatus {\n    _builtin_original?: _ServiceAccountStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ServiceAccountStatusImpl  implements _ServiceAccountStatus {\n    _builtin_original?: _ServiceAccountStatus = undefined;\n    public user: UserIdentity  | undefined ;\n    constructor(base: _ServiceAccountStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user') >= 0) {\n            this.user = base.user;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newServiceAccountStatusImpl(base: _ServiceAccountStatus): ServiceAccountStatusImpl {\n    return new ServiceAccountStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configuration related to exposing a Network Service. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ServiceExposeConfig { \n    /**\n     * Exposes the network as a TLS endpoint. This is suitable for Networks that require direct access to a Network Service that supports TLS. This requires that the client must set the SNI in the TLS hello according to the hostname naming scheme:    <service_name>.networks.<organisation subdomain>  When enabled, for convenience, the hostname for the exposed network service is provided in the ApplicationServiceRoutingInfo in the exposed_as_hostname property. \n     */\n    expose_as_hostname?: boolean;\n}\n\nexport interface ServiceExposeConfig extends _ServiceExposeConfig {\n    _builtin_original?: _ServiceExposeConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ServiceExposeConfigImpl  implements _ServiceExposeConfig {\n    _builtin_original?: _ServiceExposeConfig = undefined;\n    public expose_as_hostname: boolean  | undefined ;\n    constructor(base: _ServiceExposeConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'expose_as_hostname') >= 0) {\n            this.expose_as_hostname = base.expose_as_hostname;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newServiceExposeConfigImpl(base: _ServiceExposeConfig): ServiceExposeConfigImpl {\n    return new ServiceExposeConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _NetworkServiceConfig, NetworkServiceConfig, NetworkServiceConfigImpl, newNetworkServiceConfigImpl } from './networkServiceConfig';\n\n\n/**\n * The configurable properties of a ServiceForwarder. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ServiceForwarderSpec { \n    /**\n     * The name of the service forwarder. This value must be unique within an organisation. \n     */\n    name: string;\n    /**\n     * The organisation which owns this service forwarder.\n     */\n    org_id: string;\n    /**\n     * The local bind address that local applications will forward to in order to access the service forwarder.  bind_address default is localhost. \n     */\n    bind_address?: string;\n    /**\n     * The transport-layer port on which to access the service forwarder. exclusiveMinimum: 0 exclusiveMaximum: 65536 If port is not provided on create, the port will be automatically populated as the port currently configured in the application service. Should the application service have multiple ports, the port to be configured is ambiguous and a 400 will be raised, requiring the user to specific the port in which to forward. If an application_service is not provided, a 400 is raised as the fowarder cannot be created. \n     */\n    port?: number;\n    config?: NetworkServiceConfig;\n    /**\n     * The transport-layer protocol being fowarded to the remote application service. \n     */\n    protocol?: ServiceForwarderSpec.ProtocolEnum;\n    /**\n     * The application service id that this service forwarder connects to. \n     */\n    application_service_id?: string | null;\n    /**\n     * A unique identifier which can be empty. The meaning of it being empty depends on the context in which it is used, but usually it implies that something is not set. \n     */\n    connector_id?: string | null;\n}\n\nexport interface ServiceForwarderSpec extends _ServiceForwarderSpec {\n    _builtin_original?: _ServiceForwarderSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ServiceForwarderSpecImpl  implements _ServiceForwarderSpec {\n    _builtin_original?: _ServiceForwarderSpec = undefined;\n    public name: string ;\n    public org_id: string ;\n    public bind_address: string  | undefined ;\n    public port: number  | undefined ;\n    public config: NetworkServiceConfig  | undefined ;\n    public protocol: ServiceForwarderSpec.ProtocolEnum  | undefined ;\n    public application_service_id: string | null  | undefined ;\n    public connector_id: string | null  | undefined ;\n    constructor(base: _ServiceForwarderSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'bind_address') >= 0) {\n            this.bind_address = base.bind_address;\n        }\n        if (Object.keys(base).findIndex(key => key === 'port') >= 0) {\n            this.port = base.port;\n        }\n        if (Object.keys(base).findIndex(key => key === 'config') >= 0) {\n            this.config = base.config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'protocol') >= 0) {\n            this.protocol = base.protocol;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_service_id') >= 0) {\n            this.application_service_id = base.application_service_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'connector_id') >= 0) {\n            this.connector_id = base.connector_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace ServiceForwarderSpec {\n    export type ProtocolEnum = 'tcp';\n    export const ProtocolEnum = {\n        tcp: 'tcp' as ProtocolEnum\n    };\n}\n\n\nexport function newServiceForwarderSpecImpl(base: _ServiceForwarderSpec): ServiceForwarderSpecImpl {\n    return new ServiceForwarderSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ServiceForwarderStats, ServiceForwarderStats, ServiceForwarderStatsImpl, newServiceForwarderStatsImpl } from './serviceForwarderStats';\nimport { _ApplicationService, ApplicationService, ApplicationServiceImpl, newApplicationServiceImpl } from './applicationService';\n\n\n/**\n * The status properties of a ServiceForwarder. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ServiceForwarderStatus { \n    /**\n     * The connection uri used to connect to the application service. \n     */\n    connection_uri?: string;\n    application_service?: ApplicationService;\n    stats?: ServiceForwarderStats;\n}\n\nexport interface ServiceForwarderStatus extends _ServiceForwarderStatus {\n    _builtin_original?: _ServiceForwarderStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ServiceForwarderStatusImpl  implements _ServiceForwarderStatus {\n    _builtin_original?: _ServiceForwarderStatus = undefined;\n    public connection_uri: string  | undefined ;\n    public application_service: ApplicationService  | undefined ;\n    public stats: ServiceForwarderStats  | undefined ;\n    constructor(base: _ServiceForwarderStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'connection_uri') >= 0) {\n            this.connection_uri = base.connection_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_service') >= 0) {\n            this.application_service = base.application_service;\n        }\n        if (Object.keys(base).findIndex(key => key === 'stats') >= 0) {\n            this.stats = base.stats;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newServiceForwarderStatusImpl(base: _ServiceForwarderStatus): ServiceForwarderStatusImpl {\n    return new ServiceForwarderStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _JSInject, JSInject, JSInjectImpl, newJSInjectImpl } from './jSInject';\n\n\n/**\n * HTTP configuration for an Application Service providing connectivity to an HTTP endpoint. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ServiceHttpConfig { \n    /**\n     * Normally the proxy announces HTTP/2 capability. Allow this to be disabled if required by the service or clients.  The default behavior is always announce HTTP/2 support. \n     */\n    disable_http2?: boolean;\n    js_injections?: Array<JSInject>;\n    /**\n     * This service requires its cookie to be set. \n     */\n    set_token_cookie?: boolean;\n    /**\n     * When proxying HTTP requests to the upstream, rewrite the host header to the hostname configured for this Service. \n     */\n    rewrite_hostname?: boolean;\n    /**\n     * When proxying HTTP requests to the upstream, include the port from this service in the host header. If this field is True, but rewrite_hostname False, this property is assumed to be False. \n     */\n    rewrite_hostname_with_port?: boolean;\n    /**\n     * When proxying HTTP requests to the upstream, rewrite the host header to this value. This property will override the hostname and will assume rewrite_hostname is False. \n     */\n    rewrite_hostname_override?: string;\n}\n\nexport interface ServiceHttpConfig extends _ServiceHttpConfig {\n    _builtin_original?: _ServiceHttpConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ServiceHttpConfigImpl  implements _ServiceHttpConfig {\n    _builtin_original?: _ServiceHttpConfig = undefined;\n    public disable_http2: boolean  | undefined ;\n    public js_injections: Array<JSInject>  | undefined ;\n    public set_token_cookie: boolean  | undefined ;\n    public rewrite_hostname: boolean  | undefined ;\n    public rewrite_hostname_with_port: boolean  | undefined ;\n    public rewrite_hostname_override: string  | undefined ;\n    constructor(base: _ServiceHttpConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'disable_http2') >= 0) {\n            this.disable_http2 = base.disable_http2;\n        }\n        if (Object.keys(base).findIndex(key => key === 'js_injections') >= 0) {\n            if (base.js_injections) {\n                this.js_injections = base.js_injections.map((original) => newJSInjectImpl(original));\n            } else {\n                this.js_injections = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'set_token_cookie') >= 0) {\n            this.set_token_cookie = base.set_token_cookie;\n        }\n        if (Object.keys(base).findIndex(key => key === 'rewrite_hostname') >= 0) {\n            this.rewrite_hostname = base.rewrite_hostname;\n        }\n        if (Object.keys(base).findIndex(key => key === 'rewrite_hostname_with_port') >= 0) {\n            this.rewrite_hostname_with_port = base.rewrite_hostname_with_port;\n        }\n        if (Object.keys(base).findIndex(key => key === 'rewrite_hostname_override') >= 0) {\n            this.rewrite_hostname_override = base.rewrite_hostname_override;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.js_injections !== undefined) {\n            for (const item of this.js_injections) {\n                if (item !== undefined && (item as JSInjectImpl)._remove_builtin_extensions !== undefined) {\n                    (item as JSInjectImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newServiceHttpConfigImpl(base: _ServiceHttpConfig): ServiceHttpConfigImpl {\n    return new ServiceHttpConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _ServiceHttpConfig, ServiceHttpConfig, ServiceHttpConfigImpl, newServiceHttpConfigImpl } from './serviceHttpConfig';\nimport { _ServiceExposeConfig, ServiceExposeConfig, ServiceExposeConfigImpl, newServiceExposeConfigImpl } from './serviceExposeConfig';\n\n\n/**\n * Protocol configuration for an Applicaiton Service. This configuration is dependent on the type of Service and the type of protocol used (eg. HTTP). \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ServiceProtocolConfig { \n    http_config?: ServiceHttpConfig;\n    expose_config?: ServiceExposeConfig;\n}\n\nexport interface ServiceProtocolConfig extends _ServiceProtocolConfig {\n    _builtin_original?: _ServiceProtocolConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ServiceProtocolConfigImpl  implements _ServiceProtocolConfig {\n    _builtin_original?: _ServiceProtocolConfig = undefined;\n    public http_config: ServiceHttpConfig  | undefined ;\n    public expose_config: ServiceExposeConfig  | undefined ;\n    constructor(base: _ServiceProtocolConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'http_config') >= 0) {\n            this.http_config = base.http_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'expose_config') >= 0) {\n            this.expose_config = base.expose_config;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newServiceProtocolConfigImpl(base: _ServiceProtocolConfig): ServiceProtocolConfigImpl {\n    return new ServiceProtocolConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _SessionChallengeStatus, SessionChallengeStatus, SessionChallengeStatusImpl, newSessionChallengeStatusImpl } from './sessionChallengeStatus';\nimport { _SessionChallengeSpec, SessionChallengeSpec, SessionChallengeSpecImpl, newSessionChallengeSpecImpl } from './sessionChallengeSpec';\n\n\n/**\n * Session Challenge\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SessionChallenge { \n    spec?: SessionChallengeSpec;\n    status?: SessionChallengeStatus;\n}\n\nexport interface SessionChallenge extends _SessionChallenge {\n    _builtin_original?: _SessionChallenge;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SessionChallengeImpl  implements _SessionChallenge {\n    _builtin_original?: _SessionChallenge = undefined;\n    public spec: SessionChallengeSpec  | undefined ;\n    public status: SessionChallengeStatus  | undefined ;\n    constructor(base: _SessionChallenge) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSessionChallengeImpl(base: _SessionChallenge): SessionChallengeImpl {\n    return new SessionChallengeImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _SessionChallenge, SessionChallenge, SessionChallengeImpl, newSessionChallengeImpl } from './sessionChallenge';\n\n\n/**\n * A message sent to a user so that they can respond to a session challenge. This contains the session challenge, as well as a token which may be used to respond to the challenge. The returned token can *only* be used for responding to the challenge. It has no other use, and times out in the same time range as the challenge itself. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SessionChallengeMessage { \n    session_challenge: SessionChallenge;\n    /**\n     * The token to use when responding to the session challenge. This token will time out soon after the challenge times out. \n     */\n    token: string;\n}\n\nexport interface SessionChallengeMessage extends _SessionChallengeMessage {\n    _builtin_original?: _SessionChallengeMessage;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SessionChallengeMessageImpl  implements _SessionChallengeMessage {\n    _builtin_original?: _SessionChallengeMessage = undefined;\n    public session_challenge: SessionChallenge ;\n    public token: string ;\n    constructor(base: _SessionChallengeMessage) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'session_challenge') >= 0) {\n            this.session_challenge = base.session_challenge;\n        }\n        if (Object.keys(base).findIndex(key => key === 'token') >= 0) {\n            this.token = base.token;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSessionChallengeMessageImpl(base: _SessionChallengeMessage): SessionChallengeMessageImpl {\n    return new SessionChallengeMessageImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Session Challenge Specification\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SessionChallengeSpec { \n    /**\n     * Create a webpush based session challenge request. This would create another challenge request with answer data, which is then messaged to the user via webpush (messages api). This allows creating session challenges on resources such as RDP and shares, where the client is not a browser. \n     */\n    webpush?: boolean;\n    /**\n     * Description to user as to which can provide info such as which resource this session challege is associated with. \n     */\n    description?: string;\n}\n\nexport interface SessionChallengeSpec extends _SessionChallengeSpec {\n    _builtin_original?: _SessionChallengeSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SessionChallengeSpecImpl  implements _SessionChallengeSpec {\n    _builtin_original?: _SessionChallengeSpec = undefined;\n    public webpush: boolean  | undefined ;\n    public description: string  | undefined ;\n    constructor(base: _SessionChallengeSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'webpush') >= 0) {\n            this.webpush = base.webpush;\n        }\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSessionChallengeSpecImpl(base: _SessionChallengeSpec): SessionChallengeSpecImpl {\n    return new SessionChallengeSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _WebAuthNEnrollment, WebAuthNEnrollment, WebAuthNEnrollmentImpl, newWebAuthNEnrollmentImpl } from './webAuthNEnrollment';\nimport { _Challenge, Challenge, ChallengeImpl, newChallengeImpl } from './challenge';\nimport { _Session, Session, SessionImpl, newSessionImpl } from './session';\n\n\n/**\n * Session Challenge\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SessionChallengeStatus { \n    /**\n     * Description to user as to which can provide info such as which resource this session challege is associated with. \n     */\n    description?: string;\n    challenge?: Challenge;\n    session?: Session;\n    /**\n     * webauthn enrollments \n     */\n    webauthn_enrollments?: Array<WebAuthNEnrollment>;\n}\n\nexport interface SessionChallengeStatus extends _SessionChallengeStatus {\n    _builtin_original?: _SessionChallengeStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SessionChallengeStatusImpl  implements _SessionChallengeStatus {\n    _builtin_original?: _SessionChallengeStatus = undefined;\n    public description: string  | undefined ;\n    public challenge: Challenge  | undefined ;\n    public session: Session  | undefined ;\n    public webauthn_enrollments: Array<WebAuthNEnrollment>  | undefined ;\n    constructor(base: _SessionChallengeStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'challenge') >= 0) {\n            this.challenge = base.challenge;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session') >= 0) {\n            this.session = base.session;\n        }\n        if (Object.keys(base).findIndex(key => key === 'webauthn_enrollments') >= 0) {\n            if (base.webauthn_enrollments) {\n                this.webauthn_enrollments = base.webauthn_enrollments.map((original) => newWebAuthNEnrollmentImpl(original));\n            } else {\n                this.webauthn_enrollments = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.webauthn_enrollments !== undefined) {\n            for (const item of this.webauthn_enrollments) {\n                if (item !== undefined && (item as WebAuthNEnrollmentImpl)._remove_builtin_extensions !== undefined) {\n                    (item as WebAuthNEnrollmentImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newSessionChallengeStatusImpl(base: _SessionChallengeStatus): SessionChallengeStatusImpl {\n    return new SessionChallengeStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Session status\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SessionStatus { \n    /**\n     * challenge id associated with session\n     */\n    challenge_id?: string;\n    /**\n     * Time since the epoch, in seconds, when a multifactor challenge associated with this token was last succesfully performed. If not set then no successfully multifactor challenge is associated with this token. \n     */\n    last_mfa_time?: number;\n    /**\n     * the number of webpush challenge requests sent for this session\n     */\n    webpush_sent?: number;\n    /**\n     * date-time of the most recent webpush that was sent\n     */\n    last_webpush?: Date;\n}\n\nexport interface SessionStatus extends _SessionStatus {\n    _builtin_original?: _SessionStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SessionStatusImpl  implements _SessionStatus {\n    _builtin_original?: _SessionStatus = undefined;\n    public challenge_id: string  | undefined ;\n    public last_mfa_time: number  | undefined ;\n    public webpush_sent: number  | undefined ;\n    public last_webpush: Date  | undefined ;\n    constructor(base: _SessionStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'challenge_id') >= 0) {\n            this.challenge_id = base.challenge_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_mfa_time') >= 0) {\n            this.last_mfa_time = base.last_mfa_time;\n        }\n        if (Object.keys(base).findIndex(key => key === 'webpush_sent') >= 0) {\n            this.webpush_sent = base.webpush_sent;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_webpush') >= 0) {\n            this.last_webpush = base.last_webpush;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSessionStatusImpl(base: _SessionStatus): SessionStatusImpl {\n    return new SessionStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The information describing a session.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SessionsSpec { \n    /**\n     * The user id associated with the session\n     */\n    user_id: string;\n    /**\n     * The org id associated with the issuer the user is logging into\n     */\n    org_id: string;\n    /**\n     * The status of a the session. A session is no longer valid if it has been revoked.\n     */\n    revoked?: boolean;\n    /**\n     * The number of times a user has logged in during this session\n     */\n    number_of_logins?: number;\n    /**\n     * The number of times a user has failed a multi-factor authentication challenge associated with this session\n     */\n    number_of_failed_multi_factor_challenges?: number;\n    /**\n     * Allows creation of a session and asserting that MFA was complete. This cannot be updated and can only be utilized on creation of a new session. Setting this on creation will set the last_mfa_time for this session as the current time of creation of the session. \n     */\n    mfa_done?: boolean;\n}\n\nexport interface SessionsSpec extends _SessionsSpec {\n    _builtin_original?: _SessionsSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SessionsSpecImpl  implements _SessionsSpec {\n    _builtin_original?: _SessionsSpec = undefined;\n    public user_id: string ;\n    public org_id: string ;\n    public revoked: boolean  | undefined ;\n    public number_of_logins: number  | undefined ;\n    public number_of_failed_multi_factor_challenges: number  | undefined ;\n    public mfa_done: boolean  | undefined ;\n    constructor(base: _SessionsSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'revoked') >= 0) {\n            this.revoked = base.revoked;\n        }\n        if (Object.keys(base).findIndex(key => key === 'number_of_logins') >= 0) {\n            this.number_of_logins = base.number_of_logins;\n        }\n        if (Object.keys(base).findIndex(key => key === 'number_of_failed_multi_factor_challenges') >= 0) {\n            this.number_of_failed_multi_factor_challenges = base.number_of_failed_multi_factor_challenges;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mfa_done') >= 0) {\n            this.mfa_done = base.mfa_done;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSessionsSpecImpl(base: _SessionsSpec): SessionsSpecImpl {\n    return new SessionsSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Detailed statistics for requests made to a share. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ShareDetailedStats { \n    /**\n     * The number of requests which read a file or directory. \n     */\n    requests_read?: number;\n    /**\n     * The number of requests which created a file or directory \n     */\n    requests_create?: number;\n    /**\n     * The number of requests which modified a file or directory \n     */\n    requests_modify?: number;\n    /**\n     * The number of requests which deleted a file or directory \n     */\n    requests_delete?: number;\n    /**\n     * The number of requests which locked a file or directory \n     */\n    requests_lock?: number;\n    /**\n     * The number of requests which performed an operation not broken out in to a specific counter \n     */\n    requests_other?: number;\n    /**\n     * The number of requests which failed because the connector could not find the share \n     */\n    failure_not_found?: number;\n    /**\n     * The number of requests which failed because the connector did not have permission to access the share \n     */\n    failure_permission?: number;\n    /**\n     * The number of file/folder creations which failed to set the correct owner for file-level share permissions \n     */\n    warn_owner_permission?: number;\n    /**\n     * The number of requests which failed for an unspecified reason. \n     */\n    failure_other?: number;\n}\n\nexport interface ShareDetailedStats extends _ShareDetailedStats {\n    _builtin_original?: _ShareDetailedStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ShareDetailedStatsImpl  implements _ShareDetailedStats {\n    _builtin_original?: _ShareDetailedStats = undefined;\n    public requests_read: number  | undefined ;\n    public requests_create: number  | undefined ;\n    public requests_modify: number  | undefined ;\n    public requests_delete: number  | undefined ;\n    public requests_lock: number  | undefined ;\n    public requests_other: number  | undefined ;\n    public failure_not_found: number  | undefined ;\n    public failure_permission: number  | undefined ;\n    public warn_owner_permission: number  | undefined ;\n    public failure_other: number  | undefined ;\n    constructor(base: _ShareDetailedStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'requests_read') >= 0) {\n            this.requests_read = base.requests_read;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requests_create') >= 0) {\n            this.requests_create = base.requests_create;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requests_modify') >= 0) {\n            this.requests_modify = base.requests_modify;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requests_delete') >= 0) {\n            this.requests_delete = base.requests_delete;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requests_lock') >= 0) {\n            this.requests_lock = base.requests_lock;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requests_other') >= 0) {\n            this.requests_other = base.requests_other;\n        }\n        if (Object.keys(base).findIndex(key => key === 'failure_not_found') >= 0) {\n            this.failure_not_found = base.failure_not_found;\n        }\n        if (Object.keys(base).findIndex(key => key === 'failure_permission') >= 0) {\n            this.failure_permission = base.failure_permission;\n        }\n        if (Object.keys(base).findIndex(key => key === 'warn_owner_permission') >= 0) {\n            this.warn_owner_permission = base.warn_owner_permission;\n        }\n        if (Object.keys(base).findIndex(key => key === 'failure_other') >= 0) {\n            this.failure_other = base.failure_other;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newShareDetailedStatsImpl(base: _ShareDetailedStats): ShareDetailedStatsImpl {\n    return new ShareDetailedStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Summary statistics for requests made to a share. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _ShareSummaryStats { \n    /**\n     * The total number of requests to the share \n     */\n    requests_total?: number;\n    /**\n     * The total number of requests where the share functioned as expected. Note that this includes requests which may appear as failures from the perspective of the end user. For example, a request for a non-existant file may seem to be a failure. However, it counts as a succesful request here because the share protocol is operating as designed. \n     */\n    requests_successful?: number;\n    /**\n     * The total number of requests where the share did not function as expected. Note that this does not includes requests which may appear as failures from the perspective of the end user. For example, a request for a non-existant file may seem to be a failure. However, it does not count as a failed request here because the share protocol is operating as designed. \n     */\n    requests_failed?: number;\n}\n\nexport interface ShareSummaryStats extends _ShareSummaryStats {\n    _builtin_original?: _ShareSummaryStats;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class ShareSummaryStatsImpl  implements _ShareSummaryStats {\n    _builtin_original?: _ShareSummaryStats = undefined;\n    public requests_total: number  | undefined ;\n    public requests_successful: number  | undefined ;\n    public requests_failed: number  | undefined ;\n    constructor(base: _ShareSummaryStats) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'requests_total') >= 0) {\n            this.requests_total = base.requests_total;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requests_successful') >= 0) {\n            this.requests_successful = base.requests_successful;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requests_failed') >= 0) {\n            this.requests_failed = base.requests_failed;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newShareSummaryStatsImpl(base: _ShareSummaryStats): ShareSummaryStatsImpl {\n    return new ShareSummaryStatsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Defines an entry in a simplified tree of rules to be evaluated in a policy pipeline. The underlying policy model is somewhat more complicated than this -- allowing a fair bit more flexibility. The SimpleResourcePolicyTemplate hides much of that complexity with a simple recursive structure.  `rule_name` points to a rule in the containing SimpleResourcePolicyTemplate. If it matches, then its actions are applied, and the children are recursively evaluated in priority order (from high to low). The actions of the first matching child evaluating are applied. The other children are ignored. If the result of the actions is `none` then the entire tree from here down is considered unmatched. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SimpleResourcePolicyTemplateStructureNode { \n    /**\n     * The priority of a rule. Lower numbers are lower priority. The engine evaluates rules in order of highest priority to lowest. \n     */\n    priority: number;\n    /**\n     * The name of component of the rule system \n     */\n    rule_name: string;\n    children: Array<SimpleResourcePolicyTemplateStructureNode>;\n}\n\nexport interface SimpleResourcePolicyTemplateStructureNode extends _SimpleResourcePolicyTemplateStructureNode {\n    _builtin_original?: _SimpleResourcePolicyTemplateStructureNode;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SimpleResourcePolicyTemplateStructureNodeImpl  implements _SimpleResourcePolicyTemplateStructureNode {\n    _builtin_original?: _SimpleResourcePolicyTemplateStructureNode = undefined;\n    public priority: number ;\n    public rule_name: string ;\n    public children: Array<SimpleResourcePolicyTemplateStructureNode> ;\n    constructor(base: _SimpleResourcePolicyTemplateStructureNode) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'priority') >= 0) {\n            this.priority = base.priority;\n        }\n        if (Object.keys(base).findIndex(key => key === 'rule_name') >= 0) {\n            this.rule_name = base.rule_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'children') >= 0) {\n            if (base.children) {\n                this.children = base.children.map((original) => newSimpleResourcePolicyTemplateStructureNodeImpl(original));\n            } else {\n                this.children = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.children !== undefined) {\n            for (const item of this.children) {\n                if (item !== undefined && (item as SimpleResourcePolicyTemplateStructureNodeImpl)._remove_builtin_extensions !== undefined) {\n                    (item as SimpleResourcePolicyTemplateStructureNodeImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newSimpleResourcePolicyTemplateStructureNodeImpl(base: _SimpleResourcePolicyTemplateStructureNode): SimpleResourcePolicyTemplateStructureNodeImpl {\n    return new SimpleResourcePolicyTemplateStructureNodeImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Assign specific object conditions to a Rulset or RuleTree. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneObjectConditions { \n    /**\n     * A list of scopes associated with this ruleset \n     */\n    scopes?: Array<string>;\n}\n\nexport interface StandaloneObjectConditions extends _StandaloneObjectConditions {\n    _builtin_original?: _StandaloneObjectConditions;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneObjectConditionsImpl  implements _StandaloneObjectConditions {\n    _builtin_original?: _StandaloneObjectConditions = undefined;\n    public scopes: Array<string>  | undefined ;\n    constructor(base: _StandaloneObjectConditions) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'scopes') >= 0) {\n            this.scopes = base.scopes;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneObjectConditionsImpl(base: _StandaloneObjectConditions): StandaloneObjectConditionsImpl {\n    return new StandaloneObjectConditionsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The specification of a StandaloneRulePolicy. A StandaloneRulePolicy is uniquely identified by: (org_id, object_type, object_id, policy_class, policy_instance). When a given key in the primary key does not matter, put \\\"\\\". \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRulePolicySpec { \n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * The type of an object\n     */\n    object_type: string;\n    /**\n     * Unique identifier\n     */\n    object_id: string;\n    /**\n     * Used to distinguish between different \\'classes\\' of policy which each provide a certain type of functionality. For example, a templating system might give each template a unique class, distinguishing different sets of paremeters for a given template with a different policy_instance. Null means that this policy doesn\\'t fall into any particular category. \n     */\n    policy_class: string;\n    /**\n     * Used to distinguish between different policies of a given class. For example, an org may have two policies with class `mfa`, but different parameters. Those two would have a different \\'instance\\'. The caller is responsible for ensuring a unique instance where necessary. \n     */\n    policy_instance: string;\n    /**\n     * A brief description of the StandaloneRulePolicy \n     */\n    description?: string;\n    /**\n     * A simple object used to track details about how the policy is used (E.g. template version). \n     */\n    annotations?: object;\n}\n\nexport interface StandaloneRulePolicySpec extends _StandaloneRulePolicySpec {\n    _builtin_original?: _StandaloneRulePolicySpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRulePolicySpecImpl  implements _StandaloneRulePolicySpec {\n    _builtin_original?: _StandaloneRulePolicySpec = undefined;\n    public org_id: string ;\n    public object_type: string ;\n    public object_id: string ;\n    public policy_class: string ;\n    public policy_instance: string ;\n    public description: string  | undefined ;\n    public annotations: object  | undefined ;\n    constructor(base: _StandaloneRulePolicySpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'object_type') >= 0) {\n            this.object_type = base.object_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'object_id') >= 0) {\n            this.object_id = base.object_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'policy_class') >= 0) {\n            this.policy_class = base.policy_class;\n        }\n        if (Object.keys(base).findIndex(key => key === 'policy_instance') >= 0) {\n            this.policy_instance = base.policy_instance;\n        }\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'annotations') >= 0) {\n            this.annotations = base.annotations;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneRulePolicySpecImpl(base: _StandaloneRulePolicySpec): StandaloneRulePolicySpecImpl {\n    return new StandaloneRulePolicySpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _RuleConfig, RuleConfig, RuleConfigImpl, newRuleConfigImpl } from './ruleConfig';\n\n\n/**\n * The rule specification. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRuleSpec { \n    rule: RuleConfig;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * Describes the purpose of the rule. Typically used by the system to aid in UI activities. \n     */\n    purpose?: string;\n    /**\n     * A unique identifier which can be empty. The meaning of it being empty depends on the context in which it is used, but usually it implies that something is not set. \n     */\n    standalone_rule_policy_id?: string | null;\n}\n\nexport interface StandaloneRuleSpec extends _StandaloneRuleSpec {\n    _builtin_original?: _StandaloneRuleSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRuleSpecImpl  implements _StandaloneRuleSpec {\n    _builtin_original?: _StandaloneRuleSpec = undefined;\n    public rule: RuleConfig ;\n    public org_id: string ;\n    public purpose: string  | undefined ;\n    public standalone_rule_policy_id: string | null  | undefined ;\n    constructor(base: _StandaloneRuleSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'rule') >= 0) {\n            this.rule = base.rule;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'purpose') >= 0) {\n            this.purpose = base.purpose;\n        }\n        if (Object.keys(base).findIndex(key => key === 'standalone_rule_policy_id') >= 0) {\n            this.standalone_rule_policy_id = base.standalone_rule_policy_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneRuleSpecImpl(base: _StandaloneRuleSpec): StandaloneRuleSpecImpl {\n    return new StandaloneRuleSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A wrapper object for a reference to the rule name of a StandaloneRuleTreeNode. The rule_name refers to the unique name for a StandaloneRule witin the organisation of the tree. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRuleTreeRuleRef { \n    /**\n     * The name of component of the rule system \n     */\n    rule_name: string;\n}\n\nexport interface StandaloneRuleTreeRuleRef extends _StandaloneRuleTreeRuleRef {\n    _builtin_original?: _StandaloneRuleTreeRuleRef;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRuleTreeRuleRefImpl  implements _StandaloneRuleTreeRuleRef {\n    _builtin_original?: _StandaloneRuleTreeRuleRef = undefined;\n    public rule_name: string ;\n    constructor(base: _StandaloneRuleTreeRuleRef) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'rule_name') >= 0) {\n            this.rule_name = base.rule_name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneRuleTreeRuleRefImpl(base: _StandaloneRuleTreeRuleRef): StandaloneRuleTreeRuleRefImpl {\n    return new StandaloneRuleTreeRuleRefImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneRuleTreeNode, StandaloneRuleTreeNode, StandaloneRuleTreeNodeImpl, newStandaloneRuleTreeNodeImpl } from './standaloneRuleTreeNode';\n\n\n/**\n * Defines a child tree of a StandaloneRuleTreeNode. The priority, unique amongst siblings, defines the order in which the siblings are evaluated (highest to lowest). The node is the child tree. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRuleTreeNodeChild { \n    /**\n     * The priority of a rule. Lower numbers are lower priority. The engine evaluates rules in order of highest priority to lowest. \n     */\n    priority: number;\n    node: StandaloneRuleTreeNode;\n}\n\nexport interface StandaloneRuleTreeNodeChild extends _StandaloneRuleTreeNodeChild {\n    _builtin_original?: _StandaloneRuleTreeNodeChild;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRuleTreeNodeChildImpl  implements _StandaloneRuleTreeNodeChild {\n    _builtin_original?: _StandaloneRuleTreeNodeChild = undefined;\n    public priority: number ;\n    public node: StandaloneRuleTreeNode ;\n    constructor(base: _StandaloneRuleTreeNodeChild) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'priority') >= 0) {\n            this.priority = base.priority;\n        }\n        if (Object.keys(base).findIndex(key => key === 'node') >= 0) {\n            this.node = base.node;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneRuleTreeNodeChildImpl(base: _StandaloneRuleTreeNodeChild): StandaloneRuleTreeNodeChildImpl {\n    return new StandaloneRuleTreeNodeChildImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneRuleTreeRuleRef, StandaloneRuleTreeRuleRef, StandaloneRuleTreeRuleRefImpl, newStandaloneRuleTreeRuleRefImpl } from './standaloneRuleTreeRuleRef';\nimport { _StandaloneRuleTreeNodeChild, StandaloneRuleTreeNodeChild, StandaloneRuleTreeNodeChildImpl, newStandaloneRuleTreeNodeChildImpl } from './standaloneRuleTreeNodeChild';\n\n\n/**\n * A node in a StandaloneRuleTree. Evaluation of a StandaloneRuleTree starts from its `tree` node. A given node first evaluates all of its `rules`. If they all evaluated to true, or the list is empty, then the `children` nodes are evaluated in priority order. Evaluation halts if one of the `rules` is false, or the `children` are empty. Actions are evaluated in the top-down order. I.e. actions defined by a parent are evaluated before actions defined by a child. Priority must be unique with the list of children. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRuleTreeNode { \n    /**\n     * The children of this node. They are evaluated in the order specified by their priority. Each child is itself a tree, evaluated recursively. \n     */\n    children: Array<StandaloneRuleTreeNodeChild>;\n    /**\n     * The references of rules for this node. If each rule in this list evaluates to true, then the children of this node are evaluated. \n     */\n    rules: Array<StandaloneRuleTreeRuleRef>;\n    /**\n     * the default case \\'false\\', if the children to not evaluate to true, the result is still true since the root (rules) was true. However to change this behavior and requiret the children to also be true for the final result to be true, set this property to true.\n     */\n    require_children_true?: boolean;\n}\n\nexport interface StandaloneRuleTreeNode extends _StandaloneRuleTreeNode {\n    _builtin_original?: _StandaloneRuleTreeNode;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRuleTreeNodeImpl  implements _StandaloneRuleTreeNode {\n    _builtin_original?: _StandaloneRuleTreeNode = undefined;\n    public children: Array<StandaloneRuleTreeNodeChild> ;\n    public rules: Array<StandaloneRuleTreeRuleRef> ;\n    public require_children_true: boolean  | undefined ;\n    constructor(base: _StandaloneRuleTreeNode) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'children') >= 0) {\n            if (base.children) {\n                this.children = base.children.map((original) => newStandaloneRuleTreeNodeChildImpl(original));\n            } else {\n                this.children = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'rules') >= 0) {\n            if (base.rules) {\n                this.rules = base.rules.map((original) => newStandaloneRuleTreeRuleRefImpl(original));\n            } else {\n                this.rules = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'require_children_true') >= 0) {\n            this.require_children_true = base.require_children_true;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.children !== undefined) {\n            for (const item of this.children) {\n                if (item !== undefined && (item as StandaloneRuleTreeNodeChildImpl)._remove_builtin_extensions !== undefined) {\n                    (item as StandaloneRuleTreeNodeChildImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.rules !== undefined) {\n            for (const item of this.rules) {\n                if (item !== undefined && (item as StandaloneRuleTreeRuleRefImpl)._remove_builtin_extensions !== undefined) {\n                    (item as StandaloneRuleTreeRuleRefImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newStandaloneRuleTreeNodeImpl(base: _StandaloneRuleTreeNode): StandaloneRuleTreeNodeImpl {\n    return new StandaloneRuleTreeNodeImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A reference to a StandaloneRuleTree to be included elsewhere. Priority defines the order in which the tree is evaluated in the included context. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRuleTreeRef { \n    /**\n     * The name of component of the rule system \n     */\n    rule_tree_name: string;\n    /**\n     * The priority of a rule. Lower numbers are lower priority. The engine evaluates rules in order of highest priority to lowest. \n     */\n    priority: number;\n}\n\nexport interface StandaloneRuleTreeRef extends _StandaloneRuleTreeRef {\n    _builtin_original?: _StandaloneRuleTreeRef;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRuleTreeRefImpl  implements _StandaloneRuleTreeRef {\n    _builtin_original?: _StandaloneRuleTreeRef = undefined;\n    public rule_tree_name: string ;\n    public priority: number ;\n    constructor(base: _StandaloneRuleTreeRef) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'rule_tree_name') >= 0) {\n            this.rule_tree_name = base.rule_tree_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'priority') >= 0) {\n            this.priority = base.priority;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneRuleTreeRefImpl(base: _StandaloneRuleTreeRef): StandaloneRuleTreeRefImpl {\n    return new StandaloneRuleTreeRefImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneObjectConditions, StandaloneObjectConditions, StandaloneObjectConditionsImpl, newStandaloneObjectConditionsImpl } from './standaloneObjectConditions';\nimport { _StandaloneRuleTreeNode, StandaloneRuleTreeNode, StandaloneRuleTreeNodeImpl, newStandaloneRuleTreeNodeImpl } from './standaloneRuleTreeNode';\n\n\n/**\n * Definition of a StandaloneRuleTree. The spec contains a tree, which recursively defines a tree of rules. Name is used to help with human identificaction of the rule, but is not necessary. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRuleTreeSpec { \n    /**\n     * The name of component of the rule system \n     */\n    name: string;\n    tree: StandaloneRuleTreeNode;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    object_conditions?: StandaloneObjectConditions;\n    /**\n     * A description of the purpose of the StandaloneRuleTree. Use this to provide more context for why the rule exists, any complexities or decisions related to it, etc. \n     */\n    description?: string;\n    /**\n     * A unique identifier which can be empty. The meaning of it being empty depends on the context in which it is used, but usually it implies that something is not set. \n     */\n    standalone_rule_policy_id?: string | null;\n}\n\nexport interface StandaloneRuleTreeSpec extends _StandaloneRuleTreeSpec {\n    _builtin_original?: _StandaloneRuleTreeSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRuleTreeSpecImpl  implements _StandaloneRuleTreeSpec {\n    _builtin_original?: _StandaloneRuleTreeSpec = undefined;\n    public name: string ;\n    public tree: StandaloneRuleTreeNode ;\n    public org_id: string ;\n    public object_conditions: StandaloneObjectConditions  | undefined ;\n    public description: string  | undefined ;\n    public standalone_rule_policy_id: string | null  | undefined ;\n    constructor(base: _StandaloneRuleTreeSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'tree') >= 0) {\n            this.tree = base.tree;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'object_conditions') >= 0) {\n            this.object_conditions = base.object_conditions;\n        }\n        if (Object.keys(base).findIndex(key => key === 'description') >= 0) {\n            this.description = base.description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'standalone_rule_policy_id') >= 0) {\n            this.standalone_rule_policy_id = base.standalone_rule_policy_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneRuleTreeSpecImpl(base: _StandaloneRuleTreeSpec): StandaloneRuleTreeSpecImpl {\n    return new StandaloneRuleTreeSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _DereferencedStandaloneRuleTreeNode, DereferencedStandaloneRuleTreeNode, DereferencedStandaloneRuleTreeNodeImpl, newDereferencedStandaloneRuleTreeNodeImpl } from './dereferencedStandaloneRuleTreeNode';\n\n\n/**\n * The status of the StandaloneRuleTree. If requested, this will include the dereferened tree correspondin to the tree defined \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRuleTreeStatus { \n    tree?: DereferencedStandaloneRuleTreeNode;\n}\n\nexport interface StandaloneRuleTreeStatus extends _StandaloneRuleTreeStatus {\n    _builtin_original?: _StandaloneRuleTreeStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRuleTreeStatusImpl  implements _StandaloneRuleTreeStatus {\n    _builtin_original?: _StandaloneRuleTreeStatus = undefined;\n    public tree: DereferencedStandaloneRuleTreeNode  | undefined ;\n    constructor(base: _StandaloneRuleTreeStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'tree') >= 0) {\n            this.tree = base.tree;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneRuleTreeStatusImpl(base: _StandaloneRuleTreeStatus): StandaloneRuleTreeStatusImpl {\n    return new StandaloneRuleTreeStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneRulesCleanupSpec, StandaloneRulesCleanupSpec, StandaloneRulesCleanupSpecImpl, newStandaloneRulesCleanupSpecImpl } from './standaloneRulesCleanupSpec';\nimport { _StandaloneRulesCleanupStatus, StandaloneRulesCleanupStatus, StandaloneRulesCleanupStatusImpl, newStandaloneRulesCleanupStatusImpl } from './standaloneRulesCleanupStatus';\n\n\n/**\n * Cleanup various components for rules. Allows specifying object_type/id, as well as labels, and will cleanup all related components related.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRulesCleanup { \n    spec: StandaloneRulesCleanupSpec;\n    status?: StandaloneRulesCleanupStatus;\n}\n\nexport interface StandaloneRulesCleanup extends _StandaloneRulesCleanup {\n    _builtin_original?: _StandaloneRulesCleanup;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRulesCleanupImpl  implements _StandaloneRulesCleanup {\n    _builtin_original?: _StandaloneRulesCleanup = undefined;\n    public spec: StandaloneRulesCleanupSpec ;\n    public status: StandaloneRulesCleanupStatus  | undefined ;\n    constructor(base: _StandaloneRulesCleanup) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneRulesCleanupImpl(base: _StandaloneRulesCleanup): StandaloneRulesCleanupImpl {\n    return new StandaloneRulesCleanupImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * spec for StandaloneRulesCleanup\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRulesCleanupSpec { \n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * The type of an object\n     */\n    object_type?: string;\n    /**\n     * Unique identifier\n     */\n    object_id?: string;\n    /**\n     * A list of labels to be deleted \n     */\n    labels?: Array<string>;\n}\n\nexport interface StandaloneRulesCleanupSpec extends _StandaloneRulesCleanupSpec {\n    _builtin_original?: _StandaloneRulesCleanupSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRulesCleanupSpecImpl  implements _StandaloneRulesCleanupSpec {\n    _builtin_original?: _StandaloneRulesCleanupSpec = undefined;\n    public org_id: string ;\n    public object_type: string  | undefined ;\n    public object_id: string  | undefined ;\n    public labels: Array<string>  | undefined ;\n    constructor(base: _StandaloneRulesCleanupSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'object_type') >= 0) {\n            this.object_type = base.object_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'object_id') >= 0) {\n            this.object_id = base.object_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'labels') >= 0) {\n            this.labels = base.labels;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneRulesCleanupSpecImpl(base: _StandaloneRulesCleanupSpec): StandaloneRulesCleanupSpecImpl {\n    return new StandaloneRulesCleanupSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * status for StandaloneRulesCleanup\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRulesCleanupStatus { \n    /**\n     * the bundles that were deleted\n     */\n    bundles_deleted?: Array<string>;\n    /**\n     * the rule policies that were deleted\n     */\n    rule_policies_deleted?: Array<string>;\n    /**\n     * the labels that were deleted\n     */\n    labels_deleted?: Array<string>;\n}\n\nexport interface StandaloneRulesCleanupStatus extends _StandaloneRulesCleanupStatus {\n    _builtin_original?: _StandaloneRulesCleanupStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRulesCleanupStatusImpl  implements _StandaloneRulesCleanupStatus {\n    _builtin_original?: _StandaloneRulesCleanupStatus = undefined;\n    public bundles_deleted: Array<string>  | undefined ;\n    public rule_policies_deleted: Array<string>  | undefined ;\n    public labels_deleted: Array<string>  | undefined ;\n    constructor(base: _StandaloneRulesCleanupStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'bundles_deleted') >= 0) {\n            this.bundles_deleted = base.bundles_deleted;\n        }\n        if (Object.keys(base).findIndex(key => key === 'rule_policies_deleted') >= 0) {\n            this.rule_policies_deleted = base.rule_policies_deleted;\n        }\n        if (Object.keys(base).findIndex(key => key === 'labels_deleted') >= 0) {\n            this.labels_deleted = base.labels_deleted;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneRulesCleanupStatusImpl(base: _StandaloneRulesCleanupStatus): StandaloneRulesCleanupStatusImpl {\n    return new StandaloneRulesCleanupStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneRulesetLabelSpec, StandaloneRulesetLabelSpec, StandaloneRulesetLabelSpecImpl, newStandaloneRulesetLabelSpecImpl } from './standaloneRulesetLabelSpec';\n\n\n/**\n * A label that is part of a bundle and its associated operation. The rulesets in the bundle will be evaluated in priority order according to the priority associated with the label that brought them into the set. If the ruleset matches multiple label, it will take the lowest matching priority. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRulesetBundleLabel { \n    /**\n     * if true, the rulesets with the label are excluded from the bundle. When a label is excluded, it takes precendence over included rules, such that if a ruleset were to labeled with both an exclude and not exclude label, the result would be for that ruleset to be excluded. \n     */\n    exclude?: boolean;\n    label: StandaloneRulesetLabelSpec;\n    /**\n     * The priority of a rule. Lower numbers are lower priority. The engine evaluates rules in order of highest priority to lowest. \n     */\n    priority?: number;\n}\n\nexport interface StandaloneRulesetBundleLabel extends _StandaloneRulesetBundleLabel {\n    _builtin_original?: _StandaloneRulesetBundleLabel;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRulesetBundleLabelImpl  implements _StandaloneRulesetBundleLabel {\n    _builtin_original?: _StandaloneRulesetBundleLabel = undefined;\n    public exclude: boolean  | undefined ;\n    public label: StandaloneRulesetLabelSpec ;\n    public priority: number  | undefined ;\n    constructor(base: _StandaloneRulesetBundleLabel) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'exclude') >= 0) {\n            this.exclude = base.exclude;\n        }\n        if (Object.keys(base).findIndex(key => key === 'label') >= 0) {\n            this.label = base.label;\n        }\n        if (Object.keys(base).findIndex(key => key === 'priority') >= 0) {\n            this.priority = base.priority;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneRulesetBundleLabelImpl(base: _StandaloneRulesetBundleLabel): StandaloneRulesetBundleLabelImpl {\n    return new StandaloneRulesetBundleLabelImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneRulesetBundleLabel, StandaloneRulesetBundleLabel, StandaloneRulesetBundleLabelImpl, newStandaloneRulesetBundleLabelImpl } from './standaloneRulesetBundleLabel';\n\n\n/**\n * The Specification for a StandaloneRulesetBundle.  StandaloneRulesets are bundled based on the following:  - All labels that are \\'included\\' will build the list  - All \\'excluded\\' rules will then be removed from the list \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRulesetBundleSpec { \n    /**\n     * An identifier used to associate with a RulesetBundle . \n     */\n    name: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * list of labels associated with this bundle\n     */\n    labels?: Array<StandaloneRulesetBundleLabel>;\n}\n\nexport interface StandaloneRulesetBundleSpec extends _StandaloneRulesetBundleSpec {\n    _builtin_original?: _StandaloneRulesetBundleSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRulesetBundleSpecImpl  implements _StandaloneRulesetBundleSpec {\n    _builtin_original?: _StandaloneRulesetBundleSpec = undefined;\n    public name: string ;\n    public org_id: string ;\n    public labels: Array<StandaloneRulesetBundleLabel>  | undefined ;\n    constructor(base: _StandaloneRulesetBundleSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'labels') >= 0) {\n            if (base.labels) {\n                this.labels = base.labels.map((original) => newStandaloneRulesetBundleLabelImpl(original));\n            } else {\n                this.labels = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.labels !== undefined) {\n            for (const item of this.labels) {\n                if (item !== undefined && (item as StandaloneRulesetBundleLabelImpl)._remove_builtin_extensions !== undefined) {\n                    (item as StandaloneRulesetBundleLabelImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newStandaloneRulesetBundleSpecImpl(base: _StandaloneRulesetBundleSpec): StandaloneRulesetBundleSpecImpl {\n    return new StandaloneRulesetBundleSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneRuleset, StandaloneRuleset, StandaloneRulesetImpl, newStandaloneRulesetImpl } from './standaloneRuleset';\n\n\n/**\n * A container object describing how a StandaloneRuleset is included in a bundle. The priority describes the priority at which the ruleset was ultimately included. A null priority is treated as the lowest possible priority. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRulesetInBundle { \n    /**\n     * The priority of a rule. Lower numbers are lower priority. The engine evaluates rules in order of highest priority to lowest. \n     */\n    priority: number | null;\n    standalone_ruleset: StandaloneRuleset;\n}\n\nexport interface StandaloneRulesetInBundle extends _StandaloneRulesetInBundle {\n    _builtin_original?: _StandaloneRulesetInBundle;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRulesetInBundleImpl  implements _StandaloneRulesetInBundle {\n    _builtin_original?: _StandaloneRulesetInBundle = undefined;\n    public priority: number | null ;\n    public standalone_ruleset: StandaloneRuleset ;\n    constructor(base: _StandaloneRulesetInBundle) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'priority') >= 0) {\n            this.priority = base.priority;\n        }\n        if (Object.keys(base).findIndex(key => key === 'standalone_ruleset') >= 0) {\n            this.standalone_ruleset = base.standalone_ruleset;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneRulesetInBundleImpl(base: _StandaloneRulesetInBundle): StandaloneRulesetInBundleImpl {\n    return new StandaloneRulesetInBundleImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneRulesetInBundle, StandaloneRulesetInBundle, StandaloneRulesetInBundleImpl, newStandaloneRulesetInBundleImpl } from './standaloneRulesetInBundle';\n\n\n/**\n * The Status for a StandaloneRulesetBundle. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRulesetBundleStatus { \n    /**\n     * List of StandaloneRulesetInBundle\n     */\n    standalone_rulesets?: Array<StandaloneRulesetInBundle>;\n    /**\n     * The entity tag (etag) associated with standalone_rulesets.\n     */\n    standalone_rulesets_etag?: string;\n}\n\nexport interface StandaloneRulesetBundleStatus extends _StandaloneRulesetBundleStatus {\n    _builtin_original?: _StandaloneRulesetBundleStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRulesetBundleStatusImpl  implements _StandaloneRulesetBundleStatus {\n    _builtin_original?: _StandaloneRulesetBundleStatus = undefined;\n    public standalone_rulesets: Array<StandaloneRulesetInBundle>  | undefined ;\n    public standalone_rulesets_etag: string  | undefined ;\n    constructor(base: _StandaloneRulesetBundleStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'standalone_rulesets') >= 0) {\n            if (base.standalone_rulesets) {\n                this.standalone_rulesets = base.standalone_rulesets.map((original) => newStandaloneRulesetInBundleImpl(original));\n            } else {\n                this.standalone_rulesets = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'standalone_rulesets_etag') >= 0) {\n            this.standalone_rulesets_etag = base.standalone_rulesets_etag;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.standalone_rulesets !== undefined) {\n            for (const item of this.standalone_rulesets) {\n                if (item !== undefined && (item as StandaloneRulesetInBundleImpl)._remove_builtin_extensions !== undefined) {\n                    (item as StandaloneRulesetInBundleImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newStandaloneRulesetBundleStatusImpl(base: _StandaloneRulesetBundleStatus): StandaloneRulesetBundleStatusImpl {\n    return new StandaloneRulesetBundleStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRulesetLabelSpec { \n    /**\n     * An identifier used to associate with one or more rulesets. \n     */\n    name: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n}\n\nexport interface StandaloneRulesetLabelSpec extends _StandaloneRulesetLabelSpec {\n    _builtin_original?: _StandaloneRulesetLabelSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRulesetLabelSpecImpl  implements _StandaloneRulesetLabelSpec {\n    _builtin_original?: _StandaloneRulesetLabelSpec = undefined;\n    public name: string ;\n    public org_id: string ;\n    constructor(base: _StandaloneRulesetLabelSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneRulesetLabelSpecImpl(base: _StandaloneRulesetLabelSpec): StandaloneRulesetLabelSpecImpl {\n    return new StandaloneRulesetLabelSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRulesetLabelStatus { \n    /**\n     * last update to a ruleset with this label\n     */\n    readonly last_update?: Date;\n}\n\nexport interface StandaloneRulesetLabelStatus extends _StandaloneRulesetLabelStatus {\n    _builtin_original?: _StandaloneRulesetLabelStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRulesetLabelStatusImpl  implements _StandaloneRulesetLabelStatus {\n    _builtin_original?: _StandaloneRulesetLabelStatus = undefined;\n    public readonly last_update: Date  | undefined ;\n    constructor(base: _StandaloneRulesetLabelStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'last_update') >= 0) {\n            this.last_update = base.last_update;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStandaloneRulesetLabelStatusImpl(base: _StandaloneRulesetLabelStatus): StandaloneRulesetLabelStatusImpl {\n    return new StandaloneRulesetLabelStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneObjectConditions, StandaloneObjectConditions, StandaloneObjectConditionsImpl, newStandaloneObjectConditionsImpl } from './standaloneObjectConditions';\nimport { _StandaloneRuleTreeRef, StandaloneRuleTreeRef, StandaloneRuleTreeRefImpl, newStandaloneRuleTreeRefImpl } from './standaloneRuleTreeRef';\n\n\n/**\n * The specification of the StandaloneRuleset. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRulesetSpec { \n    /**\n     * The name of component of the rule system \n     */\n    name: string;\n    /**\n     * A list of labels within this organisation to associated with the StandaloneRuleset \n     */\n    labels: Array<string>;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    object_conditions?: StandaloneObjectConditions;\n    rule_trees: Array<StandaloneRuleTreeRef>;\n    /**\n     * A unique identifier which can be empty. The meaning of it being empty depends on the context in which it is used, but usually it implies that something is not set. \n     */\n    standalone_rule_policy_id?: string | null;\n}\n\nexport interface StandaloneRulesetSpec extends _StandaloneRulesetSpec {\n    _builtin_original?: _StandaloneRulesetSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRulesetSpecImpl  implements _StandaloneRulesetSpec {\n    _builtin_original?: _StandaloneRulesetSpec = undefined;\n    public name: string ;\n    public labels: Array<string> ;\n    public org_id: string ;\n    public object_conditions: StandaloneObjectConditions  | undefined ;\n    public rule_trees: Array<StandaloneRuleTreeRef> ;\n    public standalone_rule_policy_id: string | null  | undefined ;\n    constructor(base: _StandaloneRulesetSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'labels') >= 0) {\n            this.labels = base.labels;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'object_conditions') >= 0) {\n            this.object_conditions = base.object_conditions;\n        }\n        if (Object.keys(base).findIndex(key => key === 'rule_trees') >= 0) {\n            if (base.rule_trees) {\n                this.rule_trees = base.rule_trees.map((original) => newStandaloneRuleTreeRefImpl(original));\n            } else {\n                this.rule_trees = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'standalone_rule_policy_id') >= 0) {\n            this.standalone_rule_policy_id = base.standalone_rule_policy_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.rule_trees !== undefined) {\n            for (const item of this.rule_trees) {\n                if (item !== undefined && (item as StandaloneRuleTreeRefImpl)._remove_builtin_extensions !== undefined) {\n                    (item as StandaloneRuleTreeRefImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newStandaloneRulesetSpecImpl(base: _StandaloneRulesetSpec): StandaloneRulesetSpecImpl {\n    return new StandaloneRulesetSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StandaloneRuleTree, StandaloneRuleTree, StandaloneRuleTreeImpl, newStandaloneRuleTreeImpl } from './standaloneRuleTree';\n\n\n/**\n * The system-derived properties of the StandloneRuleset. Includes the dereferenced RuleTrees when asked for. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StandaloneRulesetStatus { \n    rule_trees?: Array<StandaloneRuleTree>;\n}\n\nexport interface StandaloneRulesetStatus extends _StandaloneRulesetStatus {\n    _builtin_original?: _StandaloneRulesetStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StandaloneRulesetStatusImpl  implements _StandaloneRulesetStatus {\n    _builtin_original?: _StandaloneRulesetStatus = undefined;\n    public rule_trees: Array<StandaloneRuleTree>  | undefined ;\n    constructor(base: _StandaloneRulesetStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'rule_trees') >= 0) {\n            if (base.rule_trees) {\n                this.rule_trees = base.rule_trees.map((original) => newStandaloneRuleTreeImpl(original));\n            } else {\n                this.rule_trees = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.rule_trees !== undefined) {\n            for (const item of this.rule_trees) {\n                if (item !== undefined && (item as StandaloneRuleTreeImpl)._remove_builtin_extensions !== undefined) {\n                    (item as StandaloneRuleTreeImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newStandaloneRulesetStatusImpl(base: _StandaloneRulesetStatus): StandaloneRulesetStatusImpl {\n    return new StandaloneRulesetStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StatsPublishingLevelConfig, StatsPublishingLevelConfig, StatsPublishingLevelConfigImpl, newStatsPublishingLevelConfigImpl } from './statsPublishingLevelConfig';\n\n\n/**\n * Configures how a connector publishes its statistics. You can control the level of statistics the connector will publish on a per-type basis. Each type supports different levels of publishing (e.g. summary vs detailed). Each level for a type may be configured to publish for a given duration. Typically if you need only one type of stats, you would configure for how long the connector should publish for that type and the desired subtype/level of detail. Continue to submit this configuration until you no longer need the statistics. Note that the connector will stop publishing statistics eventually to avoid unnecessarily consuming bandwidth unless you continue to submit configuration. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StatsPublishingConfig { \n    upstream_network_publishing: StatsPublishingLevelConfig;\n    upstream_http_publishing: StatsPublishingLevelConfig;\n    upstream_share_publishing?: StatsPublishingLevelConfig;\n    /**\n     * How frequently to publish detailed statistics, in seconds. The connector will publish statistics on the provided interval until it has been publishing for `publish_for_seconds`. \n     */\n    publish_period_seconds: number;\n}\n\nexport interface StatsPublishingConfig extends _StatsPublishingConfig {\n    _builtin_original?: _StatsPublishingConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StatsPublishingConfigImpl  implements _StatsPublishingConfig {\n    _builtin_original?: _StatsPublishingConfig = undefined;\n    public upstream_network_publishing: StatsPublishingLevelConfig ;\n    public upstream_http_publishing: StatsPublishingLevelConfig ;\n    public upstream_share_publishing: StatsPublishingLevelConfig  | undefined ;\n    public publish_period_seconds: number ;\n    constructor(base: _StatsPublishingConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'upstream_network_publishing') >= 0) {\n            this.upstream_network_publishing = base.upstream_network_publishing;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_http_publishing') >= 0) {\n            this.upstream_http_publishing = base.upstream_http_publishing;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_share_publishing') >= 0) {\n            this.upstream_share_publishing = base.upstream_share_publishing;\n        }\n        if (Object.keys(base).findIndex(key => key === 'publish_period_seconds') >= 0) {\n            this.publish_period_seconds = base.publish_period_seconds;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStatsPublishingConfigImpl(base: _StatsPublishingConfig): StatsPublishingConfigImpl {\n    return new StatsPublishingConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _StatsPublishingConnectorTypeConfig, StatsPublishingConnectorTypeConfig, StatsPublishingConnectorTypeConfigImpl, newStatsPublishingConnectorTypeConfigImpl } from './statsPublishingConnectorTypeConfig';\n\n\n/**\n * Configuration for how a connector publishes its statistics. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StatsPublishingConnectorConfig { \n    upstream_network_publishing: StatsPublishingConnectorTypeConfig;\n    upstream_http_publishing: StatsPublishingConnectorTypeConfig;\n    upstream_share_publishing?: StatsPublishingConnectorTypeConfig;\n    /**\n     * How frequently to publish statistics, in seconds. The connector will publish statistics on the provided interval until `publish_until`. \n     */\n    publish_period_seconds: number;\n}\n\nexport interface StatsPublishingConnectorConfig extends _StatsPublishingConnectorConfig {\n    _builtin_original?: _StatsPublishingConnectorConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StatsPublishingConnectorConfigImpl  implements _StatsPublishingConnectorConfig {\n    _builtin_original?: _StatsPublishingConnectorConfig = undefined;\n    public upstream_network_publishing: StatsPublishingConnectorTypeConfig ;\n    public upstream_http_publishing: StatsPublishingConnectorTypeConfig ;\n    public upstream_share_publishing: StatsPublishingConnectorTypeConfig  | undefined ;\n    public publish_period_seconds: number ;\n    constructor(base: _StatsPublishingConnectorConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'upstream_network_publishing') >= 0) {\n            this.upstream_network_publishing = base.upstream_network_publishing;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_http_publishing') >= 0) {\n            this.upstream_http_publishing = base.upstream_http_publishing;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_share_publishing') >= 0) {\n            this.upstream_share_publishing = base.upstream_share_publishing;\n        }\n        if (Object.keys(base).findIndex(key => key === 'publish_period_seconds') >= 0) {\n            this.publish_period_seconds = base.publish_period_seconds;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStatsPublishingConnectorConfigImpl(base: _StatsPublishingConnectorConfig): StatsPublishingConnectorConfigImpl {\n    return new StatsPublishingConnectorConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * How a connector should publish stats for a particular type of stats.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StatsPublishingConnectorTypeConfig { \n    /**\n     * The time at which to stop publishing stats.\n     */\n    summary_publish_until?: Date;\n    /**\n     * The time at which to stop publishing stats.\n     */\n    detailed_publish_until?: Date;\n}\n\nexport interface StatsPublishingConnectorTypeConfig extends _StatsPublishingConnectorTypeConfig {\n    _builtin_original?: _StatsPublishingConnectorTypeConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StatsPublishingConnectorTypeConfigImpl  implements _StatsPublishingConnectorTypeConfig {\n    _builtin_original?: _StatsPublishingConnectorTypeConfig = undefined;\n    public summary_publish_until: Date  | undefined ;\n    public detailed_publish_until: Date  | undefined ;\n    constructor(base: _StatsPublishingConnectorTypeConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'summary_publish_until') >= 0) {\n            this.summary_publish_until = base.summary_publish_until;\n        }\n        if (Object.keys(base).findIndex(key => key === 'detailed_publish_until') >= 0) {\n            this.detailed_publish_until = base.detailed_publish_until;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStatsPublishingConnectorTypeConfigImpl(base: _StatsPublishingConnectorTypeConfig): StatsPublishingConnectorTypeConfigImpl {\n    return new StatsPublishingConnectorTypeConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configures for how long to publish statistics at a given level. The connector will publish statistics from when it receives this request until at least the amount of time configured here has elapsed. Note that multiple calls to this will possibly increase how long the connector publishes for, but will not reduce that time. If a particular level\\'s duration is omitted, existing publishing config of that level will not be modified: if already publishing, the connector will continue until it times out. If not publishing, it will not begin. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StatsPublishingLevelConfig { \n    /**\n     * For how long to publish summary statistics.\n     */\n    summary_duration_seconds?: number;\n    /**\n     * For how long to publish detailed statistics.\n     */\n    detailed_duration_seconds?: number;\n}\n\nexport interface StatsPublishingLevelConfig extends _StatsPublishingLevelConfig {\n    _builtin_original?: _StatsPublishingLevelConfig;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StatsPublishingLevelConfigImpl  implements _StatsPublishingLevelConfig {\n    _builtin_original?: _StatsPublishingLevelConfig = undefined;\n    public summary_duration_seconds: number  | undefined ;\n    public detailed_duration_seconds: number  | undefined ;\n    constructor(base: _StatsPublishingLevelConfig) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'summary_duration_seconds') >= 0) {\n            this.summary_duration_seconds = base.summary_duration_seconds;\n        }\n        if (Object.keys(base).findIndex(key => key === 'detailed_duration_seconds') >= 0) {\n            this.detailed_duration_seconds = base.detailed_duration_seconds;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStatsPublishingLevelConfigImpl(base: _StatsPublishingLevelConfig): StatsPublishingLevelConfigImpl {\n    return new StatsPublishingLevelConfigImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Memory info \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _StorageInfo { \n    /**\n     * The size of storage, in Bytes\n     */\n    size?: number;\n    /**\n     * The amount of storage available (free), in Bytes.\n     */\n    storage_free?: number;\n}\n\nexport interface StorageInfo extends _StorageInfo {\n    _builtin_original?: _StorageInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class StorageInfoImpl  implements _StorageInfo {\n    _builtin_original?: _StorageInfo = undefined;\n    public size: number  | undefined ;\n    public storage_free: number  | undefined ;\n    constructor(base: _StorageInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'size') >= 0) {\n            this.size = base.size;\n        }\n        if (Object.keys(base).findIndex(key => key === 'storage_free') >= 0) {\n            this.storage_free = base.storage_free;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newStorageInfoImpl(base: _StorageInfo): StorageInfoImpl {\n    return new StorageInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * cloud storage location\n */\nexport type _StorageRegion = 'ca' | 'dev';\nexport type StorageRegion = _StorageRegion\n\nexport type StorageRegionImpl = StorageRegion;\nexport const StorageRegion = {\n    ca: 'ca' as StorageRegion,\n    dev: 'dev' as StorageRegion\n};\n\nexport function newStorageRegionImpl(base: _StorageRegion): StorageRegionImpl {\n    return base;\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _SubscriptionUsageInput, SubscriptionUsageInput, SubscriptionUsageInputImpl, newSubscriptionUsageInputImpl } from './subscriptionUsageInput';\n\n\n/**\n * Information derived from a subscription used to evaluate license constraints. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SubscriptionEvaluationInput { \n    usage?: SubscriptionUsageInput;\n}\n\nexport interface SubscriptionEvaluationInput extends _SubscriptionEvaluationInput {\n    _builtin_original?: _SubscriptionEvaluationInput;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SubscriptionEvaluationInputImpl  implements _SubscriptionEvaluationInput {\n    _builtin_original?: _SubscriptionEvaluationInput = undefined;\n    public usage: SubscriptionUsageInput  | undefined ;\n    constructor(base: _SubscriptionEvaluationInput) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'usage') >= 0) {\n            this.usage = base.usage;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSubscriptionEvaluationInputImpl(base: _SubscriptionEvaluationInput): SubscriptionEvaluationInputImpl {\n    return new SubscriptionEvaluationInputImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Information about the number of things used by a subscription. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SubscriptionUsageInput { \n    /**\n     * The number of resources. Broken out separately both for convenience, but also to ensure that constraints involving the number of resources take into account unknown resource types potentially added in the future. \n     */\n    num_resources?: number;\n    /**\n     * The number of desktops.\n     */\n    num_desktops?: number;\n    /**\n     * The number of applications.\n     */\n    num_applications?: number;\n    /**\n     * The number of networks.\n     */\n    num_networks?: number;\n    /**\n     * The number of ssh resources.\n     */\n    num_ssh?: number;\n    /**\n     * The number of databases.\n     */\n    num_databases?: number;\n    /**\n     * The number of resource groups.\n     */\n    num_resource_groups?: number;\n    /**\n     * The number of fileshares.\n     */\n    num_fileshares?: number;\n    /**\n     * The number of launchers.\n     */\n    num_launchers?: number;\n    /**\n     * The number of users.\n     */\n    num_users?: number;\n    /**\n     * The number of groups.\n     */\n    num_groups?: number;\n    /**\n     * The number of organistions in the subscription.\n     */\n    num_orgs?: number;\n    /**\n     * The number of connectors in the subscription.\n     */\n    num_connectors?: number;\n}\n\nexport interface SubscriptionUsageInput extends _SubscriptionUsageInput {\n    _builtin_original?: _SubscriptionUsageInput;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SubscriptionUsageInputImpl  implements _SubscriptionUsageInput {\n    _builtin_original?: _SubscriptionUsageInput = undefined;\n    public num_resources: number  | undefined ;\n    public num_desktops: number  | undefined ;\n    public num_applications: number  | undefined ;\n    public num_networks: number  | undefined ;\n    public num_ssh: number  | undefined ;\n    public num_databases: number  | undefined ;\n    public num_resource_groups: number  | undefined ;\n    public num_fileshares: number  | undefined ;\n    public num_launchers: number  | undefined ;\n    public num_users: number  | undefined ;\n    public num_groups: number  | undefined ;\n    public num_orgs: number  | undefined ;\n    public num_connectors: number  | undefined ;\n    constructor(base: _SubscriptionUsageInput) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'num_resources') >= 0) {\n            this.num_resources = base.num_resources;\n        }\n        if (Object.keys(base).findIndex(key => key === 'num_desktops') >= 0) {\n            this.num_desktops = base.num_desktops;\n        }\n        if (Object.keys(base).findIndex(key => key === 'num_applications') >= 0) {\n            this.num_applications = base.num_applications;\n        }\n        if (Object.keys(base).findIndex(key => key === 'num_networks') >= 0) {\n            this.num_networks = base.num_networks;\n        }\n        if (Object.keys(base).findIndex(key => key === 'num_ssh') >= 0) {\n            this.num_ssh = base.num_ssh;\n        }\n        if (Object.keys(base).findIndex(key => key === 'num_databases') >= 0) {\n            this.num_databases = base.num_databases;\n        }\n        if (Object.keys(base).findIndex(key => key === 'num_resource_groups') >= 0) {\n            this.num_resource_groups = base.num_resource_groups;\n        }\n        if (Object.keys(base).findIndex(key => key === 'num_fileshares') >= 0) {\n            this.num_fileshares = base.num_fileshares;\n        }\n        if (Object.keys(base).findIndex(key => key === 'num_launchers') >= 0) {\n            this.num_launchers = base.num_launchers;\n        }\n        if (Object.keys(base).findIndex(key => key === 'num_users') >= 0) {\n            this.num_users = base.num_users;\n        }\n        if (Object.keys(base).findIndex(key => key === 'num_groups') >= 0) {\n            this.num_groups = base.num_groups;\n        }\n        if (Object.keys(base).findIndex(key => key === 'num_orgs') >= 0) {\n            this.num_orgs = base.num_orgs;\n        }\n        if (Object.keys(base).findIndex(key => key === 'num_connectors') >= 0) {\n            this.num_connectors = base.num_connectors;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSubscriptionUsageInputImpl(base: _SubscriptionUsageInput): SubscriptionUsageInputImpl {\n    return new SubscriptionUsageInputImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configuration containing properties associated with a support request that is allowed to provide support to the organisation. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SupportRequestAcknowledgementSpec { \n    /**\n     * ID of the supporting user, used to confirm that they can provide support to the support request \n     */\n    supporting_user_id: string;\n    /**\n     * Org ID of the supporting user\n     */\n    org_id: string;\n    /**\n     * ID of a support request, used as a binder to the support request\n     */\n    support_request_id: string;\n}\n\nexport interface SupportRequestAcknowledgementSpec extends _SupportRequestAcknowledgementSpec {\n    _builtin_original?: _SupportRequestAcknowledgementSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SupportRequestAcknowledgementSpecImpl  implements _SupportRequestAcknowledgementSpec {\n    _builtin_original?: _SupportRequestAcknowledgementSpec = undefined;\n    public supporting_user_id: string ;\n    public org_id: string ;\n    public support_request_id: string ;\n    constructor(base: _SupportRequestAcknowledgementSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'supporting_user_id') >= 0) {\n            this.supporting_user_id = base.supporting_user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'support_request_id') >= 0) {\n            this.support_request_id = base.support_request_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSupportRequestAcknowledgementSpecImpl(base: _SupportRequestAcknowledgementSpec): SupportRequestAcknowledgementSpecImpl {\n    return new SupportRequestAcknowledgementSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The current status of the support request acknowledgement. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SupportRequestAcknowledgementStatus { \n    /**\n     * User\\'s email address\n     */\n    supporting_user_email: string;\n    /**\n     * Expiry date of the acknowledged support request in UTC.\n     */\n    expiry: Date;\n}\n\nexport interface SupportRequestAcknowledgementStatus extends _SupportRequestAcknowledgementStatus {\n    _builtin_original?: _SupportRequestAcknowledgementStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SupportRequestAcknowledgementStatusImpl  implements _SupportRequestAcknowledgementStatus {\n    _builtin_original?: _SupportRequestAcknowledgementStatus = undefined;\n    public supporting_user_email: string ;\n    public expiry: Date ;\n    constructor(base: _SupportRequestAcknowledgementStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'supporting_user_email') >= 0) {\n            this.supporting_user_email = base.supporting_user_email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'expiry') >= 0) {\n            this.expiry = base.expiry;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSupportRequestAcknowledgementStatusImpl(base: _SupportRequestAcknowledgementStatus): SupportRequestAcknowledgementStatusImpl {\n    return new SupportRequestAcknowledgementStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configuration containing properties associated with a support request message \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SupportRequestMessage { \n    /**\n     * Unique identifier\n     */\n    user_id: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * Unique identifier\n     */\n    target_user_id: string;\n    /**\n     * Unique identifier\n     */\n    target_org_id: string;\n    /**\n     * Duration for which the support request is valid\n     */\n    duration?: number;\n}\n\nexport interface SupportRequestMessage extends _SupportRequestMessage {\n    _builtin_original?: _SupportRequestMessage;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SupportRequestMessageImpl  implements _SupportRequestMessage {\n    _builtin_original?: _SupportRequestMessage = undefined;\n    public user_id: string ;\n    public org_id: string ;\n    public target_user_id: string ;\n    public target_org_id: string ;\n    public duration: number  | undefined ;\n    constructor(base: _SupportRequestMessage) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'target_user_id') >= 0) {\n            this.target_user_id = base.target_user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'target_org_id') >= 0) {\n            this.target_org_id = base.target_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'duration') >= 0) {\n            this.duration = base.duration;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newSupportRequestMessageImpl(base: _SupportRequestMessage): SupportRequestMessageImpl {\n    return new SupportRequestMessageImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Configuration containing properties associated with a support request that is allowed to provide support to the organisation. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SupportRequestSpec { \n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * Unique identifier\n     */\n    supporting_user_org_id?: string;\n    /**\n     * User\\'s email address\n     */\n    supporting_user_email?: string;\n    /**\n     * The support group time in UTC. Defaults to support group created time + 24h\n     */\n    expiry?: Date;\n    /**\n     * Whether or not this support group is allowed to make modifications in this organisation A value of true indicates that the support group is not allowed \n     */\n    viewer_only_permissions?: boolean;\n    /**\n     * The state of the support request. Whether the user has access, has requested access, etc. The possible values have the following meanings:   - pending: the support request is pending   - active: the support request is still active   - terminated: the support request is terminated, group is deleted   - expired: the support request is expired \n     */\n    admin_state?: SupportRequestSpec.AdminStateEnum;\n}\n\nexport interface SupportRequestSpec extends _SupportRequestSpec {\n    _builtin_original?: _SupportRequestSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SupportRequestSpecImpl  implements _SupportRequestSpec {\n    _builtin_original?: _SupportRequestSpec = undefined;\n    public org_id: string ;\n    public supporting_user_org_id: string  | undefined ;\n    public supporting_user_email: string  | undefined ;\n    public expiry: Date  | undefined ;\n    public viewer_only_permissions: boolean  | undefined ;\n    public admin_state: SupportRequestSpec.AdminStateEnum  | undefined ;\n    constructor(base: _SupportRequestSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'supporting_user_org_id') >= 0) {\n            this.supporting_user_org_id = base.supporting_user_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'supporting_user_email') >= 0) {\n            this.supporting_user_email = base.supporting_user_email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'expiry') >= 0) {\n            this.expiry = base.expiry;\n        }\n        if (Object.keys(base).findIndex(key => key === 'viewer_only_permissions') >= 0) {\n            this.viewer_only_permissions = base.viewer_only_permissions;\n        }\n        if (Object.keys(base).findIndex(key => key === 'admin_state') >= 0) {\n            this.admin_state = base.admin_state;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace SupportRequestSpec {\n    export type AdminStateEnum = 'pending' | 'active' | 'terminated' | 'expired';\n    export const AdminStateEnum = {\n        pending: 'pending' as AdminStateEnum,\n        active: 'active' as AdminStateEnum,\n        terminated: 'terminated' as AdminStateEnum,\n        expired: 'expired' as AdminStateEnum\n    };\n}\n\n\nexport function newSupportRequestSpecImpl(base: _SupportRequestSpec): SupportRequestSpecImpl {\n    return new SupportRequestSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserIdentity, UserIdentity, UserIdentityImpl, newUserIdentityImpl } from './userIdentity';\nimport { _SupportRequestAcknowledgement, SupportRequestAcknowledgement, SupportRequestAcknowledgementImpl, newSupportRequestAcknowledgementImpl } from './supportRequestAcknowledgement';\n\n\n/**\n * The current status of the support group.  The associating_user field contains the user object corresponding to this support user which associates to, controls permissions for and puts an expiry on the actual user who will be providing support. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _SupportRequestStatus { \n    /**\n     * The id of the User corresponding to the email in SupportRequestSpec to which this support user record applies. \n     */\n    supporting_user_id?: string;\n    support_request_group?: UserIdentity;\n    /**\n     * The operational state of the support request. The overall status depending on the admin state of the support request spec and overall acknowledgement state \n     */\n    oper_state?: string;\n    /**\n     * The user ID of the User requesting support\n     */\n    requestor_user_id?: string;\n    /**\n     * The email of the User requesting support\n     */\n    requestor_email?: string;\n    /**\n     * The name of the organisation requesting support\n     */\n    organisation?: string;\n    /**\n     * A list of acknowledgements on this support request. \n     */\n    acknowledgements?: Array<SupportRequestAcknowledgement>;\n    /**\n     * The issuer of the organisation requesting support\n     */\n    issuer?: string;\n}\n\nexport interface SupportRequestStatus extends _SupportRequestStatus {\n    _builtin_original?: _SupportRequestStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class SupportRequestStatusImpl  implements _SupportRequestStatus {\n    _builtin_original?: _SupportRequestStatus = undefined;\n    public supporting_user_id: string  | undefined ;\n    public support_request_group: UserIdentity  | undefined ;\n    public oper_state: string  | undefined ;\n    public requestor_user_id: string  | undefined ;\n    public requestor_email: string  | undefined ;\n    public organisation: string  | undefined ;\n    public acknowledgements: Array<SupportRequestAcknowledgement>  | undefined ;\n    public issuer: string  | undefined ;\n    constructor(base: _SupportRequestStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'supporting_user_id') >= 0) {\n            this.supporting_user_id = base.supporting_user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'support_request_group') >= 0) {\n            this.support_request_group = base.support_request_group;\n        }\n        if (Object.keys(base).findIndex(key => key === 'oper_state') >= 0) {\n            this.oper_state = base.oper_state;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requestor_user_id') >= 0) {\n            this.requestor_user_id = base.requestor_user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requestor_email') >= 0) {\n            this.requestor_email = base.requestor_email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'organisation') >= 0) {\n            this.organisation = base.organisation;\n        }\n        if (Object.keys(base).findIndex(key => key === 'acknowledgements') >= 0) {\n            if (base.acknowledgements) {\n                this.acknowledgements = base.acknowledgements.map((original) => newSupportRequestAcknowledgementImpl(original));\n            } else {\n                this.acknowledgements = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer') >= 0) {\n            this.issuer = base.issuer;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.acknowledgements !== undefined) {\n            for (const item of this.acknowledgements) {\n                if (item !== undefined && (item as SupportRequestAcknowledgementImpl)._remove_builtin_extensions !== undefined) {\n                    (item as SupportRequestAcknowledgementImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newSupportRequestStatusImpl(base: _SupportRequestStatus): SupportRequestStatusImpl {\n    return new SupportRequestStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The contents of the Time-based One-time Password enrollment answer.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TOTPEnrollmentAnswer { \n    /**\n     * Unique identifier\n     */\n    readonly user_id: string;\n    /**\n     * An opaque string used to answer the challenge.\n     */\n    answer: string;\n}\n\nexport interface TOTPEnrollmentAnswer extends _TOTPEnrollmentAnswer {\n    _builtin_original?: _TOTPEnrollmentAnswer;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TOTPEnrollmentAnswerImpl  implements _TOTPEnrollmentAnswer {\n    _builtin_original?: _TOTPEnrollmentAnswer = undefined;\n    public readonly user_id: string ;\n    public answer: string ;\n    constructor(base: _TOTPEnrollmentAnswer) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'answer') >= 0) {\n            this.answer = base.answer;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTOTPEnrollmentAnswerImpl(base: _TOTPEnrollmentAnswer): TOTPEnrollmentAnswerImpl {\n    return new TOTPEnrollmentAnswerImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The contents of the Time-based One-time Password enrollment.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TOTPEnrollmentSpec { \n    /**\n     * Unique identifier\n     */\n    readonly user_id: string;\n}\n\nexport interface TOTPEnrollmentSpec extends _TOTPEnrollmentSpec {\n    _builtin_original?: _TOTPEnrollmentSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TOTPEnrollmentSpecImpl  implements _TOTPEnrollmentSpec {\n    _builtin_original?: _TOTPEnrollmentSpec = undefined;\n    public readonly user_id: string ;\n    constructor(base: _TOTPEnrollmentSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTOTPEnrollmentSpecImpl(base: _TOTPEnrollmentSpec): TOTPEnrollmentSpecImpl {\n    return new TOTPEnrollmentSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The status of the Time-based One-time Password enrollment\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TOTPEnrollmentStatus { \n    /**\n     * The state of the TOTP enrollment. - pending: The user has been issued a key to register with their authentication application but have not provided a valid answer. - success: The user has provided a valid answer to the enrollment challenge. \n     */\n    state?: TOTPEnrollmentStatus.StateEnum;\n    /**\n     * An opaque string used to sync up the user\\'s application and agilicus\\'s Time-based One-time Password server. This will only be available when initially creating the resource.\n     */\n    key?: string;\n}\n\nexport interface TOTPEnrollmentStatus extends _TOTPEnrollmentStatus {\n    _builtin_original?: _TOTPEnrollmentStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TOTPEnrollmentStatusImpl  implements _TOTPEnrollmentStatus {\n    _builtin_original?: _TOTPEnrollmentStatus = undefined;\n    public state: TOTPEnrollmentStatus.StateEnum  | undefined ;\n    public key: string  | undefined ;\n    constructor(base: _TOTPEnrollmentStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'state') >= 0) {\n            this.state = base.state;\n        }\n        if (Object.keys(base).findIndex(key => key === 'key') >= 0) {\n            this.key = base.key;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace TOTPEnrollmentStatus {\n    export type StateEnum = 'pending' | 'success';\n    export const StateEnum = {\n        pending: 'pending' as StateEnum,\n        success: 'success' as StateEnum\n    };\n}\n\n\nexport function newTOTPEnrollmentStatusImpl(base: _TOTPEnrollmentStatus): TOTPEnrollmentStatusImpl {\n    return new TOTPEnrollmentStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Extracts data using from a templated component of a request\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TemplateExtraction { \n    /**\n     * The name of the template item. E.g. `guid` in `/collection/{guid}`. Different locations in the request can have the same name. \n     */\n    template_name?: string;\n}\n\nexport interface TemplateExtraction extends _TemplateExtraction {\n    _builtin_original?: _TemplateExtraction;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TemplateExtractionImpl  implements _TemplateExtraction {\n    _builtin_original?: _TemplateExtraction = undefined;\n    public template_name: string  | undefined ;\n    constructor(base: _TemplateExtraction) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'template_name') >= 0) {\n            this.template_name = base.template_name;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTemplateExtractionImpl(base: _TemplateExtraction): TemplateExtractionImpl {\n    return new TemplateExtractionImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The time validity of a token\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TimeValidity { \n    /**\n     * Duration for which the token is valid\n     */\n    duration?: number;\n}\n\nexport interface TimeValidity extends _TimeValidity {\n    _builtin_original?: _TimeValidity;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TimeValidityImpl  implements _TimeValidity {\n    _builtin_original?: _TimeValidity = undefined;\n    public duration: number  | undefined ;\n    constructor(base: _TimeValidity) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'duration') >= 0) {\n            this.duration = base.duration;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTimeValidityImpl(base: _TimeValidity): TimeValidityImpl {\n    return new TimeValidityImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _TokenIntrospectOptions, TokenIntrospectOptions, TokenIntrospectOptionsImpl, newTokenIntrospectOptionsImpl } from './tokenIntrospectOptions';\n\n\n/**\n * A raw token and set of options for how to introspect the token\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TokenIntrospect { \n    /**\n     * token string\n     */\n    token: string;\n    introspect_options?: TokenIntrospectOptions;\n}\n\nexport interface TokenIntrospect extends _TokenIntrospect {\n    _builtin_original?: _TokenIntrospect;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TokenIntrospectImpl  implements _TokenIntrospect {\n    _builtin_original?: _TokenIntrospect = undefined;\n    public token: string ;\n    public introspect_options: TokenIntrospectOptions  | undefined ;\n    constructor(base: _TokenIntrospect) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'token') >= 0) {\n            this.token = base.token;\n        }\n        if (Object.keys(base).findIndex(key => key === 'introspect_options') >= 0) {\n            this.introspect_options = base.introspect_options;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTokenIntrospectImpl(base: _TokenIntrospect): TokenIntrospectImpl {\n    return new TokenIntrospectImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _OrgInfo, OrgInfo, OrgInfoImpl, newOrgInfoImpl } from './orgInfo';\n\n\n/**\n * Set of options controling how the token is introspected\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TokenIntrospectOptions { \n    /**\n     * Parameter controlling whether to determine the roles during introspection\n     */\n    exclude_roles?: boolean;\n    /**\n     * Whether http matchers are supported. This can impact what response is returned depending on the type of resource for which the introspect applies. For example, some resources may create a matcher to efficient capture a range of values in a template. If http_matchers are disabled, then an inefficient list of exact matches will be returned instead. \n     */\n    support_http_matchers?: boolean;\n    target_org_info?: OrgInfo;\n    /**\n     * Request that no cache be used to generate the token introspect. \n     */\n    no_cache?: boolean;\n}\n\nexport interface TokenIntrospectOptions extends _TokenIntrospectOptions {\n    _builtin_original?: _TokenIntrospectOptions;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TokenIntrospectOptionsImpl  implements _TokenIntrospectOptions {\n    _builtin_original?: _TokenIntrospectOptions = undefined;\n    public exclude_roles: boolean  | undefined ;\n    public support_http_matchers: boolean  | undefined ;\n    public target_org_info: OrgInfo  | undefined ;\n    public no_cache: boolean  | undefined ;\n    constructor(base: _TokenIntrospectOptions) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'exclude_roles') >= 0) {\n            this.exclude_roles = base.exclude_roles;\n        }\n        if (Object.keys(base).findIndex(key => key === 'support_http_matchers') >= 0) {\n            this.support_http_matchers = base.support_http_matchers;\n        }\n        if (Object.keys(base).findIndex(key => key === 'target_org_info') >= 0) {\n            this.target_org_info = base.target_org_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'no_cache') >= 0) {\n            this.no_cache = base.no_cache;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTokenIntrospectOptionsImpl(base: _TokenIntrospectOptions): TokenIntrospectOptionsImpl {\n    return new TokenIntrospectOptionsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A request to reissue a token. This contains the existing token from which the new token will be created, and any parameters to change the scope of the token. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TokenReissueRequest { \n    /**\n     * The existing opaque token used to create the new one. This should be the same token you would normally use to make API calls. \n     */\n    token: string;\n    /**\n     * The id of the Organisation on which you want to operate with the new token. Make sure you have permissions in this organisation; otherwise the request will fail. \n     */\n    org_id: string;\n}\n\nexport interface TokenReissueRequest extends _TokenReissueRequest {\n    _builtin_original?: _TokenReissueRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TokenReissueRequestImpl  implements _TokenReissueRequest {\n    _builtin_original?: _TokenReissueRequest = undefined;\n    public token: string ;\n    public org_id: string ;\n    constructor(base: _TokenReissueRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'token') >= 0) {\n            this.token = base.token;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTokenReissueRequestImpl(base: _TokenReissueRequest): TokenReissueRequestImpl {\n    return new TokenReissueRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Request object to revoke a token\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TokenRevoke { \n    /**\n     * token string\n     */\n    token?: string;\n    /**\n     * revoke all sessions associated with token\n     */\n    all_sessions?: boolean;\n}\n\nexport interface TokenRevoke extends _TokenRevoke {\n    _builtin_original?: _TokenRevoke;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TokenRevokeImpl  implements _TokenRevoke {\n    _builtin_original?: _TokenRevoke = undefined;\n    public token: string  | undefined ;\n    public all_sessions: boolean  | undefined ;\n    constructor(base: _TokenRevoke) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'token') >= 0) {\n            this.token = base.token;\n        }\n        if (Object.keys(base).findIndex(key => key === 'all_sessions') >= 0) {\n            this.all_sessions = base.all_sessions;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTokenRevokeImpl(base: _TokenRevoke): TokenRevokeImpl {\n    return new TokenRevokeImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Token validity\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TokenValidity { \n    /**\n     * The start time for when the token is valid\n     */\n    start?: Date;\n    /**\n     * The duration of time in seconds for which the token is valid\n     */\n    duration?: number;\n    /**\n     * The end time for when the token is valid\n     */\n    end?: Date;\n    /**\n     * If true, this token does not expire.\n     */\n    does_not_expire?: boolean;\n}\n\nexport interface TokenValidity extends _TokenValidity {\n    _builtin_original?: _TokenValidity;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TokenValidityImpl  implements _TokenValidity {\n    _builtin_original?: _TokenValidity = undefined;\n    public start: Date  | undefined ;\n    public duration: number  | undefined ;\n    public end: Date  | undefined ;\n    public does_not_expire: boolean  | undefined ;\n    constructor(base: _TokenValidity) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'start') >= 0) {\n            this.start = base.start;\n        }\n        if (Object.keys(base).findIndex(key => key === 'duration') >= 0) {\n            this.duration = base.duration;\n        }\n        if (Object.keys(base).findIndex(key => key === 'end') >= 0) {\n            this.end = base.end;\n        }\n        if (Object.keys(base).findIndex(key => key === 'does_not_expire') >= 0) {\n            this.does_not_expire = base.does_not_expire;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTokenValidityImpl(base: _TokenValidity): TokenValidityImpl {\n    return new TokenValidityImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _TrustedCertificateLabelSpec, TrustedCertificateLabelSpec, TrustedCertificateLabelSpecImpl, newTrustedCertificateLabelSpecImpl } from './trustedCertificateLabelSpec';\n\n\n/**\n * A label that is part of a bundle and its associated operation. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TrustedCertificateBundleLabel { \n    /**\n     * if true, the certs with the label are excluded from the bundle. When a label is excluded, it takes precendence over included rules, such that if a certificate were to labeled with both an exclude and not exclude label, the result would be that cert to be excluded. \n     */\n    exclude?: boolean;\n    label?: TrustedCertificateLabelSpec;\n}\n\nexport interface TrustedCertificateBundleLabel extends _TrustedCertificateBundleLabel {\n    _builtin_original?: _TrustedCertificateBundleLabel;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TrustedCertificateBundleLabelImpl  implements _TrustedCertificateBundleLabel {\n    _builtin_original?: _TrustedCertificateBundleLabel = undefined;\n    public exclude: boolean  | undefined ;\n    public label: TrustedCertificateLabelSpec  | undefined ;\n    constructor(base: _TrustedCertificateBundleLabel) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'exclude') >= 0) {\n            this.exclude = base.exclude;\n        }\n        if (Object.keys(base).findIndex(key => key === 'label') >= 0) {\n            this.label = base.label;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTrustedCertificateBundleLabelImpl(base: _TrustedCertificateBundleLabel): TrustedCertificateBundleLabelImpl {\n    return new TrustedCertificateBundleLabelImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The operation by which a label is utilized inside a bundle.  include: all certificates with the specific label name will be included in the bundle exclude: all certificates with the specific label name will be excluded from the bundle \n */\nexport type _TrustedCertificateBundleLabelOperation = 'include' | 'exclude';\nexport type TrustedCertificateBundleLabelOperation = _TrustedCertificateBundleLabelOperation\n\nexport type TrustedCertificateBundleLabelOperationImpl = TrustedCertificateBundleLabelOperation;\nexport const TrustedCertificateBundleLabelOperation = {\n    include: 'include' as TrustedCertificateBundleLabelOperation,\n    exclude: 'exclude' as TrustedCertificateBundleLabelOperation\n};\n\nexport function newTrustedCertificateBundleLabelOperationImpl(base: _TrustedCertificateBundleLabelOperation): TrustedCertificateBundleLabelOperationImpl {\n    return base;\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _TrustedCertificateBundleLabel, TrustedCertificateBundleLabel, TrustedCertificateBundleLabelImpl, newTrustedCertificateBundleLabelImpl } from './trustedCertificateBundleLabel';\n\n\n/**\n * The Specification for a TrustedCertificateBundle.  Certificates are bundled based on the following:  - All labels that are \\'included\\' will build the list  - All \\'excluded\\' certificates will then be removed from the list \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TrustedCertificateBundleSpec { \n    /**\n     * An identifier used to associate with certificate bundle. \n     */\n    name: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * list of labels associated with this bundle\n     */\n    labels?: Array<TrustedCertificateBundleLabel>;\n}\n\nexport interface TrustedCertificateBundleSpec extends _TrustedCertificateBundleSpec {\n    _builtin_original?: _TrustedCertificateBundleSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TrustedCertificateBundleSpecImpl  implements _TrustedCertificateBundleSpec {\n    _builtin_original?: _TrustedCertificateBundleSpec = undefined;\n    public name: string ;\n    public org_id: string ;\n    public labels: Array<TrustedCertificateBundleLabel>  | undefined ;\n    constructor(base: _TrustedCertificateBundleSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'labels') >= 0) {\n            if (base.labels) {\n                this.labels = base.labels.map((original) => newTrustedCertificateBundleLabelImpl(original));\n            } else {\n                this.labels = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.labels !== undefined) {\n            for (const item of this.labels) {\n                if (item !== undefined && (item as TrustedCertificateBundleLabelImpl)._remove_builtin_extensions !== undefined) {\n                    (item as TrustedCertificateBundleLabelImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newTrustedCertificateBundleSpecImpl(base: _TrustedCertificateBundleSpec): TrustedCertificateBundleSpecImpl {\n    return new TrustedCertificateBundleSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _TrustedCertificate, TrustedCertificate, TrustedCertificateImpl, newTrustedCertificateImpl } from './trustedCertificate';\n\n\n/**\n * The Status for a TrustedCertificateBundle. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _TrustedCertificateBundleStatus { \n    /**\n     * List of TrustedCertificate\n     */\n    trusted_certs?: Array<TrustedCertificate>;\n    /**\n     * The entity tag (etag) associated with trusted_certs.\n     */\n    trusted_certs_etag?: string;\n}\n\nexport interface TrustedCertificateBundleStatus extends _TrustedCertificateBundleStatus {\n    _builtin_original?: _TrustedCertificateBundleStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TrustedCertificateBundleStatusImpl  implements _TrustedCertificateBundleStatus {\n    _builtin_original?: _TrustedCertificateBundleStatus = undefined;\n    public trusted_certs: Array<TrustedCertificate>  | undefined ;\n    public trusted_certs_etag: string  | undefined ;\n    constructor(base: _TrustedCertificateBundleStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'trusted_certs') >= 0) {\n            if (base.trusted_certs) {\n                this.trusted_certs = base.trusted_certs.map((original) => newTrustedCertificateImpl(original));\n            } else {\n                this.trusted_certs = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'trusted_certs_etag') >= 0) {\n            this.trusted_certs_etag = base.trusted_certs_etag;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.trusted_certs !== undefined) {\n            for (const item of this.trusted_certs) {\n                if (item !== undefined && (item as TrustedCertificateImpl)._remove_builtin_extensions !== undefined) {\n                    (item as TrustedCertificateImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newTrustedCertificateBundleStatusImpl(base: _TrustedCertificateBundleStatus): TrustedCertificateBundleStatusImpl {\n    return new TrustedCertificateBundleStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _TrustedCertificateLabelSpec { \n    /**\n     * An identifier used to associate with one or more certificates \n     */\n    name: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n}\n\nexport interface TrustedCertificateLabelSpec extends _TrustedCertificateLabelSpec {\n    _builtin_original?: _TrustedCertificateLabelSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TrustedCertificateLabelSpecImpl  implements _TrustedCertificateLabelSpec {\n    _builtin_original?: _TrustedCertificateLabelSpec = undefined;\n    public name: string ;\n    public org_id: string ;\n    constructor(base: _TrustedCertificateLabelSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTrustedCertificateLabelSpecImpl(base: _TrustedCertificateLabelSpec): TrustedCertificateLabelSpecImpl {\n    return new TrustedCertificateLabelSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _TrustedCertificateLabelStatus { \n    /**\n     * last update to a certificate with this label\n     */\n    readonly last_update?: Date;\n}\n\nexport interface TrustedCertificateLabelStatus extends _TrustedCertificateLabelStatus {\n    _builtin_original?: _TrustedCertificateLabelStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TrustedCertificateLabelStatusImpl  implements _TrustedCertificateLabelStatus {\n    _builtin_original?: _TrustedCertificateLabelStatus = undefined;\n    public readonly last_update: Date  | undefined ;\n    constructor(base: _TrustedCertificateLabelStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'last_update') >= 0) {\n            this.last_update = base.last_update;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTrustedCertificateLabelStatusImpl(base: _TrustedCertificateLabelStatus): TrustedCertificateLabelStatusImpl {\n    return new TrustedCertificateLabelStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _TrustedCertificateSpec { \n    /**\n     * When true, this certificate is trusted as a root certificate. \n     */\n    root?: boolean;\n    /**\n     * The issued x509 certificate, formatted as PEM.\n     */\n    certificate: string;\n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n    /**\n     * list of labels associated with certificate\n     */\n    labels?: Array<string>;\n}\n\nexport interface TrustedCertificateSpec extends _TrustedCertificateSpec {\n    _builtin_original?: _TrustedCertificateSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TrustedCertificateSpecImpl  implements _TrustedCertificateSpec {\n    _builtin_original?: _TrustedCertificateSpec = undefined;\n    public root: boolean  | undefined ;\n    public certificate: string ;\n    public org_id: string  | undefined ;\n    public labels: Array<string>  | undefined ;\n    constructor(base: _TrustedCertificateSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'root') >= 0) {\n            this.root = base.root;\n        }\n        if (Object.keys(base).findIndex(key => key === 'certificate') >= 0) {\n            this.certificate = base.certificate;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'labels') >= 0) {\n            this.labels = base.labels;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTrustedCertificateSpecImpl(base: _TrustedCertificateSpec): TrustedCertificateSpecImpl {\n    return new TrustedCertificateSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _TrustedCertificateStatus { \n    /**\n     * date/time for which certificate is valid\n     */\n    readonly not_before?: Date;\n    /**\n     * date/time of certificate expiry\n     */\n    readonly not_after?: Date;\n    /**\n     * the certificate serial number\n     */\n    readonly serial_number?: string;\n    /**\n     * the certificate issuer\n     */\n    readonly issuer?: string;\n    /**\n     * certificate subject\n     */\n    readonly subject?: string;\n    /**\n     * certificate subject sha128 hash\n     */\n    readonly subject_sha1?: string;\n    /**\n     * certificate subject sha256 hash\n     */\n    readonly subject_sha256?: string;\n    /**\n     * public key DER sha128 hash\n     */\n    readonly public_key_sha1?: string;\n    /**\n     * public key DER sha256 hash\n     */\n    readonly public_key_sha256?: string;\n    /**\n     * The Subject Key Identifier\n     */\n    readonly skid?: string;\n    /**\n     * The Authority Key Identifier\n     */\n    readonly akid?: string;\n    /**\n     * true if the certificate is a certificate authority, otherwise false\n     */\n    readonly ca?: boolean;\n    /**\n     * the certificate key usage extension\n     */\n    readonly key_usage_extension?: string;\n    /**\n     * This purpose is set to true when the subject public key is used for verifying digital signatures, other than signatures on certificates (key_cert_sign) and CRLs (crl_sign). \n     */\n    readonly digital_signature?: boolean;\n    /**\n     * This purpose is set to true when the subject public key is used for verifying digital signatures, other than signatures on certificates (key_cert_sign) and CRLs (crl_sign). It is used to provide a non-repudiation service that protects against the signing entity falsely denying some action. In the case of later conflict, a reliable third party may determine the authenticity of the signed data. This was called non_repudiation in older revisions of the X.509 specification. \n     */\n    readonly content_commitment?: boolean;\n    /**\n     * This purpose is set to true when the subject public key is used for enciphering private or secret keys. \n     */\n    readonly key_encipherment?: boolean;\n    /**\n     * This purpose is set to true when the subject public key is used for directly enciphering raw user data without the use of an intermediate symmetric cipher. \n     */\n    readonly data_encipherment?: boolean;\n    /**\n     * This purpose is set to true when the subject public key is used for key agreement. For example, when a Diffie-Hellman key is to be used for key management, then this purpose is set to true. \n     */\n    readonly key_agreement?: boolean;\n    /**\n     * This purpose is set to true when the subject public key is used for verifying signatures on public key certificates. If this purpose is set to true then ca must be true in the BasicConstraints extension. \n     */\n    readonly key_cert_sign?: boolean;\n    /**\n     * This purpose is set to true when the subject public key is used for verifying signatures on certificate revocation lists. \n     */\n    readonly crl_sign?: boolean;\n    /**\n     * When this purposes is set to true and the key_agreement purpose is also set, the subject public key may be used only for enciphering data while performing key agreement. \n     */\n    readonly encipher_only?: boolean;\n    /**\n     * When this purposes is set to true and the key_agreement purpose is also set, the subject public key may be used only for deciphering data while performing key agreement. \n     */\n    readonly decipher_only?: boolean;\n}\n\nexport interface TrustedCertificateStatus extends _TrustedCertificateStatus {\n    _builtin_original?: _TrustedCertificateStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class TrustedCertificateStatusImpl  implements _TrustedCertificateStatus {\n    _builtin_original?: _TrustedCertificateStatus = undefined;\n    public readonly not_before: Date  | undefined ;\n    public readonly not_after: Date  | undefined ;\n    public readonly serial_number: string  | undefined ;\n    public readonly issuer: string  | undefined ;\n    public readonly subject: string  | undefined ;\n    public readonly subject_sha1: string  | undefined ;\n    public readonly subject_sha256: string  | undefined ;\n    public readonly public_key_sha1: string  | undefined ;\n    public readonly public_key_sha256: string  | undefined ;\n    public readonly skid: string  | undefined ;\n    public readonly akid: string  | undefined ;\n    public readonly ca: boolean  | undefined ;\n    public readonly key_usage_extension: string  | undefined ;\n    public readonly digital_signature: boolean  | undefined ;\n    public readonly content_commitment: boolean  | undefined ;\n    public readonly key_encipherment: boolean  | undefined ;\n    public readonly data_encipherment: boolean  | undefined ;\n    public readonly key_agreement: boolean  | undefined ;\n    public readonly key_cert_sign: boolean  | undefined ;\n    public readonly crl_sign: boolean  | undefined ;\n    public readonly encipher_only: boolean  | undefined ;\n    public readonly decipher_only: boolean  | undefined ;\n    constructor(base: _TrustedCertificateStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'not_before') >= 0) {\n            this.not_before = base.not_before;\n        }\n        if (Object.keys(base).findIndex(key => key === 'not_after') >= 0) {\n            this.not_after = base.not_after;\n        }\n        if (Object.keys(base).findIndex(key => key === 'serial_number') >= 0) {\n            this.serial_number = base.serial_number;\n        }\n        if (Object.keys(base).findIndex(key => key === 'issuer') >= 0) {\n            this.issuer = base.issuer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'subject') >= 0) {\n            this.subject = base.subject;\n        }\n        if (Object.keys(base).findIndex(key => key === 'subject_sha1') >= 0) {\n            this.subject_sha1 = base.subject_sha1;\n        }\n        if (Object.keys(base).findIndex(key => key === 'subject_sha256') >= 0) {\n            this.subject_sha256 = base.subject_sha256;\n        }\n        if (Object.keys(base).findIndex(key => key === 'public_key_sha1') >= 0) {\n            this.public_key_sha1 = base.public_key_sha1;\n        }\n        if (Object.keys(base).findIndex(key => key === 'public_key_sha256') >= 0) {\n            this.public_key_sha256 = base.public_key_sha256;\n        }\n        if (Object.keys(base).findIndex(key => key === 'skid') >= 0) {\n            this.skid = base.skid;\n        }\n        if (Object.keys(base).findIndex(key => key === 'akid') >= 0) {\n            this.akid = base.akid;\n        }\n        if (Object.keys(base).findIndex(key => key === 'ca') >= 0) {\n            this.ca = base.ca;\n        }\n        if (Object.keys(base).findIndex(key => key === 'key_usage_extension') >= 0) {\n            this.key_usage_extension = base.key_usage_extension;\n        }\n        if (Object.keys(base).findIndex(key => key === 'digital_signature') >= 0) {\n            this.digital_signature = base.digital_signature;\n        }\n        if (Object.keys(base).findIndex(key => key === 'content_commitment') >= 0) {\n            this.content_commitment = base.content_commitment;\n        }\n        if (Object.keys(base).findIndex(key => key === 'key_encipherment') >= 0) {\n            this.key_encipherment = base.key_encipherment;\n        }\n        if (Object.keys(base).findIndex(key => key === 'data_encipherment') >= 0) {\n            this.data_encipherment = base.data_encipherment;\n        }\n        if (Object.keys(base).findIndex(key => key === 'key_agreement') >= 0) {\n            this.key_agreement = base.key_agreement;\n        }\n        if (Object.keys(base).findIndex(key => key === 'key_cert_sign') >= 0) {\n            this.key_cert_sign = base.key_cert_sign;\n        }\n        if (Object.keys(base).findIndex(key => key === 'crl_sign') >= 0) {\n            this.crl_sign = base.crl_sign;\n        }\n        if (Object.keys(base).findIndex(key => key === 'encipher_only') >= 0) {\n            this.encipher_only = base.encipher_only;\n        }\n        if (Object.keys(base).findIndex(key => key === 'decipher_only') >= 0) {\n            this.decipher_only = base.decipher_only;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newTrustedCertificateStatusImpl(base: _TrustedCertificateStatus): TrustedCertificateStatusImpl {\n    return new TrustedCertificateStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * An issuer alias object specifies what upstream providers are an alias to a given upstream provider. An upstream provider should be specified once per client, duplicate entries will be rejected. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UpstreamAliasMapping { \n    /**\n     * A name used to uniquely refer to the upstream identity provider that is being aliased\n     */\n    upstream_provider_name: string;\n    /**\n     * The list of upstream providers that are aliasing the upstream provider specified by `upstream_provider_name`\n     */\n    aliased_upstream_provider_names: Array<string>;\n}\n\nexport interface UpstreamAliasMapping extends _UpstreamAliasMapping {\n    _builtin_original?: _UpstreamAliasMapping;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UpstreamAliasMappingImpl  implements _UpstreamAliasMapping {\n    _builtin_original?: _UpstreamAliasMapping = undefined;\n    public upstream_provider_name: string ;\n    public aliased_upstream_provider_names: Array<string> ;\n    constructor(base: _UpstreamAliasMapping) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'upstream_provider_name') >= 0) {\n            this.upstream_provider_name = base.upstream_provider_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'aliased_upstream_provider_names') >= 0) {\n            this.aliased_upstream_provider_names = base.aliased_upstream_provider_names;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUpstreamAliasMappingImpl(base: _UpstreamAliasMapping): UpstreamAliasMappingImpl {\n    return new UpstreamAliasMappingImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UpstreamAliasMapping, UpstreamAliasMapping, UpstreamAliasMappingImpl, newUpstreamAliasMappingImpl } from './upstreamAliasMapping';\n\n\n/**\n * The upstream alias spec defines how the aliasing works. A mapping of upstream identity provider to a list of aliases is defined for a specific client id. Each alias will be displayed to the user when authenticating against that client id instead of displaying the `aliased` upstream \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UpstreamAliasSpec { \n    /**\n     * ID of the organisation which owns the issuer\n     */\n    org_id: string;\n    /**\n     * The client id that the aliasing applies to\n     */\n    client_id: string;\n    /**\n     * A list of aliases that are applied for the specified client_id\n     */\n    aliases: Array<UpstreamAliasMapping>;\n}\n\nexport interface UpstreamAliasSpec extends _UpstreamAliasSpec {\n    _builtin_original?: _UpstreamAliasSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UpstreamAliasSpecImpl  implements _UpstreamAliasSpec {\n    _builtin_original?: _UpstreamAliasSpec = undefined;\n    public org_id: string ;\n    public client_id: string ;\n    public aliases: Array<UpstreamAliasMapping> ;\n    constructor(base: _UpstreamAliasSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'client_id') >= 0) {\n            this.client_id = base.client_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'aliases') >= 0) {\n            if (base.aliases) {\n                this.aliases = base.aliases.map((original) => newUpstreamAliasMappingImpl(original));\n            } else {\n                this.aliases = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.aliases !== undefined) {\n            for (const item of this.aliases) {\n                if (item !== undefined && (item as UpstreamAliasMappingImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UpstreamAliasMappingImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newUpstreamAliasSpecImpl(base: _UpstreamAliasSpec): UpstreamAliasSpecImpl {\n    return new UpstreamAliasSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The mapping between an upsteam group and a group in the Agilicus System\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UpstreamGroupExcludedEntry { \n    /**\n     * The name of the group in your upstream identity provider that you want to map. This can be in the form of a regular expression. \n     */\n    upstream_group_name: string;\n    /**\n     * Indicates that the supplied upstream_group_name will be found in the list of group IDs\n     */\n    upstream_name_is_a_guid?: boolean;\n}\n\nexport interface UpstreamGroupExcludedEntry extends _UpstreamGroupExcludedEntry {\n    _builtin_original?: _UpstreamGroupExcludedEntry;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UpstreamGroupExcludedEntryImpl  implements _UpstreamGroupExcludedEntry {\n    _builtin_original?: _UpstreamGroupExcludedEntry = undefined;\n    public upstream_group_name: string ;\n    public upstream_name_is_a_guid: boolean  | undefined ;\n    constructor(base: _UpstreamGroupExcludedEntry) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'upstream_group_name') >= 0) {\n            this.upstream_group_name = base.upstream_group_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_name_is_a_guid') >= 0) {\n            this.upstream_name_is_a_guid = base.upstream_name_is_a_guid;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUpstreamGroupExcludedEntryImpl(base: _UpstreamGroupExcludedEntry): UpstreamGroupExcludedEntryImpl {\n    return new UpstreamGroupExcludedEntryImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The mapping between an upsteam group and a group in the Agilicus System\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UpstreamGroupMappingEntry { \n    /**\n     * The priority of the mapping entry. A lower number indicates a higher priority.\n     */\n    priority: number;\n    /**\n     * The name of the group in your upstream identity provider that you want to map. This can be in the form of a regular expression capture group. The example value will capture all groups starting with \\'Company Team\\' and will use the value in the agilicus_group_name. For example Company Team HR Group will be mapped to Agilicus HR Group when the agilicus_group_name is specified with a matching capture group \n     */\n    upstream_group_name: string;\n    /**\n     * Indicates that the supplied upstream_group_name will be found in the list of group IDs\n     */\n    upstream_name_is_a_guid?: boolean;\n    /**\n     * The name of the group in the Agilicus system that you want to map to. If the upstream_group_name is a capture group this field can contain those captured values. The match groups are specified by a { followed by the match number followed by a closing } ie {0} \n     */\n    agilicus_group_name: string;\n    /**\n     * The org id that this group mapping applies to. Only mappings whose org id matches the org id that the user logged into will be mapped. If no scope is specified the org id of the issuer is assumed.\n     */\n    group_org_id?: string;\n}\n\nexport interface UpstreamGroupMappingEntry extends _UpstreamGroupMappingEntry {\n    _builtin_original?: _UpstreamGroupMappingEntry;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UpstreamGroupMappingEntryImpl  implements _UpstreamGroupMappingEntry {\n    _builtin_original?: _UpstreamGroupMappingEntry = undefined;\n    public priority: number ;\n    public upstream_group_name: string ;\n    public upstream_name_is_a_guid: boolean  | undefined ;\n    public agilicus_group_name: string ;\n    public group_org_id: string  | undefined ;\n    constructor(base: _UpstreamGroupMappingEntry) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'priority') >= 0) {\n            this.priority = base.priority;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_group_name') >= 0) {\n            this.upstream_group_name = base.upstream_group_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_name_is_a_guid') >= 0) {\n            this.upstream_name_is_a_guid = base.upstream_name_is_a_guid;\n        }\n        if (Object.keys(base).findIndex(key => key === 'agilicus_group_name') >= 0) {\n            this.agilicus_group_name = base.agilicus_group_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'group_org_id') >= 0) {\n            this.group_org_id = base.group_org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUpstreamGroupMappingEntryImpl(base: _UpstreamGroupMappingEntry): UpstreamGroupMappingEntryImpl {\n    return new UpstreamGroupMappingEntryImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UpstreamGroupExcludedEntry, UpstreamGroupExcludedEntry, UpstreamGroupExcludedEntryImpl, newUpstreamGroupExcludedEntryImpl } from './upstreamGroupExcludedEntry';\nimport { _UpstreamGroupMappingEntry, UpstreamGroupMappingEntry, UpstreamGroupMappingEntryImpl, newUpstreamGroupMappingEntryImpl } from './upstreamGroupMappingEntry';\n\n\n/**\n * The definition of an upstream group mapping\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UpstreamGroupMappingSpec { \n    /**\n     * the upstream issuer that this mapping pertains to\n     */\n    upstream_issuer: string;\n    /**\n     * The org id corresponding to the issuer whose mapping is being updated\n     */\n    org_id: string;\n    /**\n     * The list of upstream group mappings\n     */\n    group_mappings?: Array<UpstreamGroupMappingEntry>;\n    /**\n     * The list of upstream groups you wish to explicitly exclude from mapping. This is useful for a wildcard mapping \n     */\n    excluded_groups?: Array<UpstreamGroupExcludedEntry>;\n}\n\nexport interface UpstreamGroupMappingSpec extends _UpstreamGroupMappingSpec {\n    _builtin_original?: _UpstreamGroupMappingSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UpstreamGroupMappingSpecImpl  implements _UpstreamGroupMappingSpec {\n    _builtin_original?: _UpstreamGroupMappingSpec = undefined;\n    public upstream_issuer: string ;\n    public org_id: string ;\n    public group_mappings: Array<UpstreamGroupMappingEntry>  | undefined ;\n    public excluded_groups: Array<UpstreamGroupExcludedEntry>  | undefined ;\n    constructor(base: _UpstreamGroupMappingSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'upstream_issuer') >= 0) {\n            this.upstream_issuer = base.upstream_issuer;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'group_mappings') >= 0) {\n            if (base.group_mappings) {\n                this.group_mappings = base.group_mappings.map((original) => newUpstreamGroupMappingEntryImpl(original));\n            } else {\n                this.group_mappings = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'excluded_groups') >= 0) {\n            if (base.excluded_groups) {\n                this.excluded_groups = base.excluded_groups.map((original) => newUpstreamGroupExcludedEntryImpl(original));\n            } else {\n                this.excluded_groups = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.group_mappings !== undefined) {\n            for (const item of this.group_mappings) {\n                if (item !== undefined && (item as UpstreamGroupMappingEntryImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UpstreamGroupMappingEntryImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.excluded_groups !== undefined) {\n            for (const item of this.excluded_groups) {\n                if (item !== undefined && (item as UpstreamGroupExcludedEntryImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UpstreamGroupExcludedEntryImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newUpstreamGroupMappingSpecImpl(base: _UpstreamGroupMappingSpec): UpstreamGroupMappingSpecImpl {\n    return new UpstreamGroupMappingSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UpstreamGroupMapping, UpstreamGroupMapping, UpstreamGroupMappingImpl, newUpstreamGroupMappingImpl } from './upstreamGroupMapping';\n\n\n/**\n * The input parameters required to reconcile a user\\'s groups with the groups from their upstream identity provider. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UpstreamGroupReconcile { \n    /**\n     * The unique id of the user within the system.\n     */\n    user_id: string;\n    /**\n     * The unique id of the Organisation from which to apply a reconcile. This applies to the org specified and all of that org\\'s sub-orgs. \n     */\n    org_id: string;\n    mapping: UpstreamGroupMapping;\n    /**\n     * The list of group names that the user is in from the perspective of the upstream identity provider.\n     */\n    group_names_from_upstream?: Array<string>;\n    /**\n     * The list of group GUIDs that the user is in from the perspective of the upstream identity provider.\n     */\n    group_guids_from_upstream?: Array<string>;\n}\n\nexport interface UpstreamGroupReconcile extends _UpstreamGroupReconcile {\n    _builtin_original?: _UpstreamGroupReconcile;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UpstreamGroupReconcileImpl  implements _UpstreamGroupReconcile {\n    _builtin_original?: _UpstreamGroupReconcile = undefined;\n    public user_id: string ;\n    public org_id: string ;\n    public mapping: UpstreamGroupMapping ;\n    public group_names_from_upstream: Array<string>  | undefined ;\n    public group_guids_from_upstream: Array<string>  | undefined ;\n    constructor(base: _UpstreamGroupReconcile) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mapping') >= 0) {\n            this.mapping = base.mapping;\n        }\n        if (Object.keys(base).findIndex(key => key === 'group_names_from_upstream') >= 0) {\n            this.group_names_from_upstream = base.group_names_from_upstream;\n        }\n        if (Object.keys(base).findIndex(key => key === 'group_guids_from_upstream') >= 0) {\n            this.group_guids_from_upstream = base.group_guids_from_upstream;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUpstreamGroupReconcileImpl(base: _UpstreamGroupReconcile): UpstreamGroupReconcileImpl {\n    return new UpstreamGroupReconcileImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _GroupReconcileRecord, GroupReconcileRecord, GroupReconcileRecordImpl, newGroupReconcileRecordImpl } from './groupReconcileRecord';\n\n\n/**\n * The response object returned from an upstream group reconcile\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UpstreamGroupReconcileResponse { \n    /**\n     * The list of groups the user was added to due to a reconcile.\n     */\n    groups_added_to?: Array<GroupReconcileRecord>;\n    /**\n     * The list of groups the user was removed from due to a reconcile.\n     */\n    groups_removed_from?: Array<GroupReconcileRecord>;\n    /**\n     * The list of groups the user is a member of as a result of reconciliation.\n     */\n    resulting_groups?: Array<GroupReconcileRecord>;\n}\n\nexport interface UpstreamGroupReconcileResponse extends _UpstreamGroupReconcileResponse {\n    _builtin_original?: _UpstreamGroupReconcileResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UpstreamGroupReconcileResponseImpl  implements _UpstreamGroupReconcileResponse {\n    _builtin_original?: _UpstreamGroupReconcileResponse = undefined;\n    public groups_added_to: Array<GroupReconcileRecord>  | undefined ;\n    public groups_removed_from: Array<GroupReconcileRecord>  | undefined ;\n    public resulting_groups: Array<GroupReconcileRecord>  | undefined ;\n    constructor(base: _UpstreamGroupReconcileResponse) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'groups_added_to') >= 0) {\n            if (base.groups_added_to) {\n                this.groups_added_to = base.groups_added_to.map((original) => newGroupReconcileRecordImpl(original));\n            } else {\n                this.groups_added_to = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'groups_removed_from') >= 0) {\n            if (base.groups_removed_from) {\n                this.groups_removed_from = base.groups_removed_from.map((original) => newGroupReconcileRecordImpl(original));\n            } else {\n                this.groups_removed_from = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'resulting_groups') >= 0) {\n            if (base.resulting_groups) {\n                this.resulting_groups = base.resulting_groups.map((original) => newGroupReconcileRecordImpl(original));\n            } else {\n                this.resulting_groups = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.groups_added_to !== undefined) {\n            for (const item of this.groups_added_to) {\n                if (item !== undefined && (item as GroupReconcileRecordImpl)._remove_builtin_extensions !== undefined) {\n                    (item as GroupReconcileRecordImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.groups_removed_from !== undefined) {\n            for (const item of this.groups_removed_from) {\n                if (item !== undefined && (item as GroupReconcileRecordImpl)._remove_builtin_extensions !== undefined) {\n                    (item as GroupReconcileRecordImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.resulting_groups !== undefined) {\n            for (const item of this.resulting_groups) {\n                if (item !== undefined && (item as GroupReconcileRecordImpl)._remove_builtin_extensions !== undefined) {\n                    (item as GroupReconcileRecordImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newUpstreamGroupReconcileResponseImpl(base: _UpstreamGroupReconcileResponse): UpstreamGroupReconcileResponseImpl {\n    return new UpstreamGroupReconcileResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserAttributes, UserAttributes, UserAttributesImpl, newUserAttributesImpl } from './userAttributes';\n\n\n/**\n * The specification of a user\\'s upstream identity. This contains the information that uniquely identifies the user in a given upstream identity provider. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UpstreamUserIdentitySpec { \n    /**\n     * The unique id of the user in the upstream identifier provider. This need not be globally unique within the system. However, the pair of it and `upstream_idp_id` must be. \n     */\n    upstream_user_id: string;\n    /**\n     * The unique id of the upstream identity provider within the system. When the user authenticates using the corresponding upstream identity provider, they will join against the user record owning this `UpstreamUseridentitySpec` by linking with the `upstream_user_id` as given by the upstream identity. Typically this will be the issuer URI. Note that it is case sensitive. \n     */\n    upstream_idp_id: string;\n    /**\n     * The unique id of the user within the system. This is the user to which this identity is tied. \n     */\n    local_user_id: string;\n    attributes?: UserAttributes;\n}\n\nexport interface UpstreamUserIdentitySpec extends _UpstreamUserIdentitySpec {\n    _builtin_original?: _UpstreamUserIdentitySpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UpstreamUserIdentitySpecImpl  implements _UpstreamUserIdentitySpec {\n    _builtin_original?: _UpstreamUserIdentitySpec = undefined;\n    public upstream_user_id: string ;\n    public upstream_idp_id: string ;\n    public local_user_id: string ;\n    public attributes: UserAttributes  | undefined ;\n    constructor(base: _UpstreamUserIdentitySpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'upstream_user_id') >= 0) {\n            this.upstream_user_id = base.upstream_user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_idp_id') >= 0) {\n            this.upstream_idp_id = base.upstream_idp_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'local_user_id') >= 0) {\n            this.local_user_id = base.local_user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'attributes') >= 0) {\n            this.attributes = base.attributes;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUpstreamUserIdentitySpecImpl(base: _UpstreamUserIdentitySpec): UpstreamUserIdentitySpecImpl {\n    return new UpstreamUserIdentitySpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A measurement pertaining to a given usage metric\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UsageMeasurement { \n    /**\n     * The peak value. This is typically the peak over a specified time interval where the interval would be specified in the query string.\n     */\n    peak?: number;\n    /**\n     * The current value for the measurement\n     */\n    current?: number;\n}\n\nexport interface UsageMeasurement extends _UsageMeasurement {\n    _builtin_original?: _UsageMeasurement;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UsageMeasurementImpl  implements _UsageMeasurement {\n    _builtin_original?: _UsageMeasurement = undefined;\n    public peak: number  | undefined ;\n    public current: number  | undefined ;\n    constructor(base: _UsageMeasurement) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'peak') >= 0) {\n            this.peak = base.peak;\n        }\n        if (Object.keys(base).findIndex(key => key === 'current') >= 0) {\n            this.current = base.current;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUsageMeasurementImpl(base: _UsageMeasurement): UsageMeasurementImpl {\n    return new UsageMeasurementImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UsageMeasurement, UsageMeasurement, UsageMeasurementImpl, newUsageMeasurementImpl } from './usageMeasurement';\n\n\n/**\n * A usage metrics for a given resource. A metric contains one or more measurements Provisioned measurements pertain to the set of created resources in the org specified by org_id Active metrics is the set of resources currently deemed active. Each resource has a different algorithm for determining if the usage metric is active or not.  A usage metric can be associated to a single org_id, or a list of org_ids. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UsageMetric { \n    /**\n     * The type of the Usage\n     */\n    type?: string;\n    /**\n     * The unique id of the Organisation to which this record applies. \n     */\n    org_id?: string;\n    /**\n     * The list of orgs to which this record applies.\n     */\n    org_ids?: Array<string>;\n    provisioned?: UsageMeasurement;\n    active?: UsageMeasurement;\n}\n\nexport interface UsageMetric extends _UsageMetric {\n    _builtin_original?: _UsageMetric;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UsageMetricImpl  implements _UsageMetric {\n    _builtin_original?: _UsageMetric = undefined;\n    public type: string  | undefined ;\n    public org_id: string  | undefined ;\n    public org_ids: Array<string>  | undefined ;\n    public provisioned: UsageMeasurement  | undefined ;\n    public active: UsageMeasurement  | undefined ;\n    constructor(base: _UsageMetric) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'type') >= 0) {\n            this.type = base.type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_ids') >= 0) {\n            this.org_ids = base.org_ids;\n        }\n        if (Object.keys(base).findIndex(key => key === 'provisioned') >= 0) {\n            this.provisioned = base.provisioned;\n        }\n        if (Object.keys(base).findIndex(key => key === 'active') >= 0) {\n            this.active = base.active;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUsageMetricImpl(base: _UsageMetric): UsageMetricImpl {\n    return new UsageMetricImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UsageMetric, UsageMetric, UsageMetricImpl, newUsageMetricImpl } from './usageMetric';\n\n\n/**\n * A collection of usage metrics pertaining to resources owned by the Applications API\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UsageMetrics { \n    /**\n     * List of Usage metrics\n     */\n    metrics?: Array<UsageMetric>;\n}\n\nexport interface UsageMetrics extends _UsageMetrics {\n    _builtin_original?: _UsageMetrics;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UsageMetricsImpl  implements _UsageMetrics {\n    _builtin_original?: _UsageMetrics = undefined;\n    public metrics: Array<UsageMetric>  | undefined ;\n    constructor(base: _UsageMetrics) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'metrics') >= 0) {\n            if (base.metrics) {\n                this.metrics = base.metrics.map((original) => newUsageMetricImpl(original));\n            } else {\n                this.metrics = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.metrics !== undefined) {\n            for (const item of this.metrics) {\n                if (item !== undefined && (item as UsageMetricImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UsageMetricImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newUsageMetricsImpl(base: _UsageMetrics): UsageMetricsImpl {\n    return new UsageMetricsImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserLauncherAccessInfo, UserLauncherAccessInfo, UserLauncherAccessInfoImpl, newUserLauncherAccessInfoImpl } from './userLauncherAccessInfo';\nimport { _UserFileShareAccessInfo, UserFileShareAccessInfo, UserFileShareAccessInfoImpl, newUserFileShareAccessInfoImpl } from './userFileShareAccessInfo';\nimport { _UserApplicationAccessInfo, UserApplicationAccessInfo, UserApplicationAccessInfoImpl, newUserApplicationAccessInfoImpl } from './userApplicationAccessInfo';\nimport { _UserResourceAccessInfo, UserResourceAccessInfo, UserResourceAccessInfoImpl, newUserResourceAccessInfoImpl } from './userResourceAccessInfo';\nimport { _UserDesktopAccessInfo, UserDesktopAccessInfo, UserDesktopAccessInfoImpl, newUserDesktopAccessInfoImpl } from './userDesktopAccessInfo';\nimport { _UserSSHAccessInfo, UserSSHAccessInfo, UserSSHAccessInfoImpl, newUserSSHAccessInfoImpl } from './userSSHAccessInfo';\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserAccessInfo { \n    /**\n     * All org_ids user is a member of \n     */\n    org_ids?: Array<string>;\n    /**\n     * The unique id of the User to which this record applies. \n     */\n    user_id?: string;\n    /**\n     * The matching UserSSHAccessInfo objects\n     */\n    user_ssh_access_info?: Array<UserSSHAccessInfo>;\n    /**\n     * The matching UserDesktopAccessInfo objects\n     */\n    user_desktop_access_info?: Array<UserDesktopAccessInfo>;\n    /**\n     * The matching UserResourceAccessInfo objects\n     */\n    user_resource_access_info?: Array<UserResourceAccessInfo>;\n    /**\n     * The matching UserFileShareAccessInfo objects\n     */\n    user_file_share_access_info?: Array<UserFileShareAccessInfo>;\n    /**\n     * The matching UserLauncherAccessInfo objects\n     */\n    user_launcher_access_info?: Array<UserLauncherAccessInfo>;\n    /**\n     * The matching UserApplicationAccessInfo objects\n     */\n    user_application_access_info?: Array<UserApplicationAccessInfo>;\n}\n\nexport interface UserAccessInfo extends _UserAccessInfo {\n    _builtin_original?: _UserAccessInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserAccessInfoImpl  implements _UserAccessInfo {\n    _builtin_original?: _UserAccessInfo = undefined;\n    public org_ids: Array<string>  | undefined ;\n    public user_id: string  | undefined ;\n    public user_ssh_access_info: Array<UserSSHAccessInfo>  | undefined ;\n    public user_desktop_access_info: Array<UserDesktopAccessInfo>  | undefined ;\n    public user_resource_access_info: Array<UserResourceAccessInfo>  | undefined ;\n    public user_file_share_access_info: Array<UserFileShareAccessInfo>  | undefined ;\n    public user_launcher_access_info: Array<UserLauncherAccessInfo>  | undefined ;\n    public user_application_access_info: Array<UserApplicationAccessInfo>  | undefined ;\n    constructor(base: _UserAccessInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'org_ids') >= 0) {\n            this.org_ids = base.org_ids;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_ssh_access_info') >= 0) {\n            if (base.user_ssh_access_info) {\n                this.user_ssh_access_info = base.user_ssh_access_info.map((original) => newUserSSHAccessInfoImpl(original));\n            } else {\n                this.user_ssh_access_info = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_desktop_access_info') >= 0) {\n            if (base.user_desktop_access_info) {\n                this.user_desktop_access_info = base.user_desktop_access_info.map((original) => newUserDesktopAccessInfoImpl(original));\n            } else {\n                this.user_desktop_access_info = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_resource_access_info') >= 0) {\n            if (base.user_resource_access_info) {\n                this.user_resource_access_info = base.user_resource_access_info.map((original) => newUserResourceAccessInfoImpl(original));\n            } else {\n                this.user_resource_access_info = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_file_share_access_info') >= 0) {\n            if (base.user_file_share_access_info) {\n                this.user_file_share_access_info = base.user_file_share_access_info.map((original) => newUserFileShareAccessInfoImpl(original));\n            } else {\n                this.user_file_share_access_info = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_launcher_access_info') >= 0) {\n            if (base.user_launcher_access_info) {\n                this.user_launcher_access_info = base.user_launcher_access_info.map((original) => newUserLauncherAccessInfoImpl(original));\n            } else {\n                this.user_launcher_access_info = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_application_access_info') >= 0) {\n            if (base.user_application_access_info) {\n                this.user_application_access_info = base.user_application_access_info.map((original) => newUserApplicationAccessInfoImpl(original));\n            } else {\n                this.user_application_access_info = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.user_ssh_access_info !== undefined) {\n            for (const item of this.user_ssh_access_info) {\n                if (item !== undefined && (item as UserSSHAccessInfoImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserSSHAccessInfoImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.user_desktop_access_info !== undefined) {\n            for (const item of this.user_desktop_access_info) {\n                if (item !== undefined && (item as UserDesktopAccessInfoImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserDesktopAccessInfoImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.user_resource_access_info !== undefined) {\n            for (const item of this.user_resource_access_info) {\n                if (item !== undefined && (item as UserResourceAccessInfoImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserResourceAccessInfoImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.user_file_share_access_info !== undefined) {\n            for (const item of this.user_file_share_access_info) {\n                if (item !== undefined && (item as UserFileShareAccessInfoImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserFileShareAccessInfoImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.user_launcher_access_info !== undefined) {\n            for (const item of this.user_launcher_access_info) {\n                if (item !== undefined && (item as UserLauncherAccessInfoImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserLauncherAccessInfoImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.user_application_access_info !== undefined) {\n            for (const item of this.user_application_access_info) {\n                if (item !== undefined && (item as UserApplicationAccessInfoImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserApplicationAccessInfoImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newUserAccessInfoImpl(base: _UserAccessInfo): UserAccessInfoImpl {\n    return new UserAccessInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _DisplayInfo, DisplayInfo, DisplayInfoImpl, newDisplayInfoImpl } from './displayInfo';\n\n\n/**\n * The read-only details of a UserApplicationAcessInfo.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserApplicationAccessInfoStatus { \n    /**\n     * The unique id of the Application to which this record applies. \n     */\n    resource_id?: string;\n    /**\n     * The unique id of the User to which this record applies. \n     */\n    user_id: string;\n    /**\n     * The unique id of the Organisation to which this record applies. \n     */\n    org_id: string;\n    /**\n     * The name of Organisation to which this record applies. \n     */\n    org_name: string;\n    /**\n     * The unique id of the parent of the Organisation to which this record applies. Omitted if the Organisation has no parent. \n     */\n    parent_org_id?: string;\n    /**\n     * The name of the parent of the Organisation to which this record applies. Omitted if the Organisation has no parent. \n     */\n    parent_org_name?: string;\n    /**\n     * The name of the application. \n     */\n    application_name: string;\n    /**\n     * The url of the application \n     */\n    application_url: string;\n    /**\n     * The description of the application \n     */\n    application_description?: string;\n    /**\n     * A category used to group similar applications together \n     */\n    application_category?: string;\n    /**\n     * A url pointing to an icon representing this application. \n     */\n    icon_url?: string;\n    /**\n     * Whether the user has access, has requested access, etc. The possible values have the following meanings:   - requested: the user has requested access to this instance.   - granted: the user has access to this instance.   - none: the user has no relation to this application. \n     */\n    access_level: UserApplicationAccessInfoStatus.AccessLevelEnum;\n    /**\n     * The name of the default role of the application. This will be granted to users by default when their access request has been approved. \n     */\n    application_default_role_name?: string | null;\n    /**\n     * The unique id the default role of the application. This will be granted to users by default when their access request has been approved. \n     */\n    application_default_role_id?: string | null;\n    /**\n     * The list of roles held by the user for the given application\n     */\n    roles?: Array<string>;\n    display_info?: DisplayInfo;\n}\n\nexport interface UserApplicationAccessInfoStatus extends _UserApplicationAccessInfoStatus {\n    _builtin_original?: _UserApplicationAccessInfoStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserApplicationAccessInfoStatusImpl  implements _UserApplicationAccessInfoStatus {\n    _builtin_original?: _UserApplicationAccessInfoStatus = undefined;\n    public resource_id: string  | undefined ;\n    public user_id: string ;\n    public org_id: string ;\n    public org_name: string ;\n    public parent_org_id: string  | undefined ;\n    public parent_org_name: string  | undefined ;\n    public application_name: string ;\n    public application_url: string ;\n    public application_description: string  | undefined ;\n    public application_category: string  | undefined ;\n    public icon_url: string  | undefined ;\n    public access_level: UserApplicationAccessInfoStatus.AccessLevelEnum ;\n    public application_default_role_name: string | null  | undefined ;\n    public application_default_role_id: string | null  | undefined ;\n    public roles: Array<string>  | undefined ;\n    public display_info: DisplayInfo  | undefined ;\n    constructor(base: _UserApplicationAccessInfoStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'resource_id') >= 0) {\n            this.resource_id = base.resource_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_name') >= 0) {\n            this.org_name = base.org_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'parent_org_id') >= 0) {\n            this.parent_org_id = base.parent_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'parent_org_name') >= 0) {\n            this.parent_org_name = base.parent_org_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_name') >= 0) {\n            this.application_name = base.application_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_url') >= 0) {\n            this.application_url = base.application_url;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_description') >= 0) {\n            this.application_description = base.application_description;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_category') >= 0) {\n            this.application_category = base.application_category;\n        }\n        if (Object.keys(base).findIndex(key => key === 'icon_url') >= 0) {\n            this.icon_url = base.icon_url;\n        }\n        if (Object.keys(base).findIndex(key => key === 'access_level') >= 0) {\n            this.access_level = base.access_level;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_default_role_name') >= 0) {\n            this.application_default_role_name = base.application_default_role_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'application_default_role_id') >= 0) {\n            this.application_default_role_id = base.application_default_role_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'roles') >= 0) {\n            this.roles = base.roles;\n        }\n        if (Object.keys(base).findIndex(key => key === 'display_info') >= 0) {\n            this.display_info = base.display_info;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace UserApplicationAccessInfoStatus {\n    export type AccessLevelEnum = 'requested' | 'granted' | 'none';\n    export const AccessLevelEnum = {\n        requested: 'requested' as AccessLevelEnum,\n        granted: 'granted' as AccessLevelEnum,\n        none: 'none' as AccessLevelEnum\n    };\n}\n\n\nexport function newUserApplicationAccessInfoStatusImpl(base: _UserApplicationAccessInfoStatus): UserApplicationAccessInfoStatusImpl {\n    return new UserApplicationAccessInfoStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserAttribute, UserAttribute, UserAttributeImpl, newUserAttributeImpl } from './userAttribute';\n\n\n/**\n * UserAttributes hold a list of generic attributes associated with a user. These typically come from an identity provider, but may be provisioned by an admin. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserAttributes { \n    /**\n     * The attributes of the user. Each attribute need not be unique. They will be merged using a json-merge style algorithm. \n     */\n    attributes: Array<UserAttribute>;\n}\n\nexport interface UserAttributes extends _UserAttributes {\n    _builtin_original?: _UserAttributes;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserAttributesImpl  implements _UserAttributes {\n    _builtin_original?: _UserAttributes = undefined;\n    public attributes: Array<UserAttribute> ;\n    constructor(base: _UserAttributes) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'attributes') >= 0) {\n            if (base.attributes) {\n                this.attributes = base.attributes.map((original) => newUserAttributeImpl(original));\n            } else {\n                this.attributes = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.attributes !== undefined) {\n            for (const item of this.attributes) {\n                if (item !== undefined && (item as UserAttributeImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserAttributeImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newUserAttributesImpl(base: _UserAttributes): UserAttributesImpl {\n    return new UserAttributesImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _DisplayInfo, DisplayInfo, DisplayInfoImpl, newDisplayInfoImpl } from './displayInfo';\nimport { _RemoteAppAccessInfo, RemoteAppAccessInfo, RemoteAppAccessInfoImpl, newRemoteAppAccessInfoImpl } from './remoteAppAccessInfo';\nimport { _CustomDesktopClientConfig, CustomDesktopClientConfig, CustomDesktopClientConfigImpl, newCustomDesktopClientConfigImpl } from './customDesktopClientConfig';\n\n\n/**\n * The read-only details of a UserDesktopAccessInfo.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserDesktopAccessInfoStatus { \n    /**\n     * The unique id of the User to which this record applies. \n     */\n    user_id: string;\n    /**\n     * The unique id of the Organisation to which this record applies. \n     */\n    org_id: string;\n    /**\n     * The name of Organisation to which this record applies. \n     */\n    org_name: string;\n    /**\n     * The unique id of the parent of the Organisation to which this record applies. Omitted if the Organisation has no parent. \n     */\n    parent_org_id?: string;\n    /**\n     * The name of the parent of the Organisation to which this record applies. Omitted if the Organisation has no parent. \n     */\n    parent_org_name?: string;\n    /**\n     * Unique identifier\n     */\n    resource_id: string;\n    /**\n     * The name of the resource. \n     */\n    resource_name: string;\n    /**\n     * The type of the resource. \n     */\n    resource_type: string;\n    /**\n     * The type of the desktop\n     */\n    desktop_type: UserDesktopAccessInfoStatus.DesktopTypeEnum;\n    /**\n     * Many resources have corresponding URIs which may be used to access them. This field provides the URI for the resource represented by this object. \n     */\n    resource_uri?: string;\n    /**\n     * Whether the user has access, has requested access, etc. The possible values have the following meanings:   - requested: the user has requested access to this resource.   - granted: the user has access to this resource   - none: the user has no relation to this resource. \n     */\n    access_level: UserDesktopAccessInfoStatus.AccessLevelEnum;\n    /**\n     * The list of roles held by the user for the given resource.\n     */\n    roles?: Array<string>;\n    remote_app?: RemoteAppAccessInfo;\n    display_info?: DisplayInfo;\n    /**\n     * The uri for launching user\\'s resource via web client \n     */\n    web_client_uri?: string;\n    /**\n     * Configuration overrides applicable to this desktop. If the configured overrides are invalid, this list will be empty, and config_overrides_error will be populated. \n     */\n    config_overrides?: Array<CustomDesktopClientConfig>;\n    /**\n     * If the system encounters an invalid CustomDesktopClientConfig associated with this desktop, then the corresponding error will be provided here for ease of diagnostics. If this value is not empty, the client should not proceed with creating configuration for the desktop. \n     */\n    config_overrides_error?: string | null;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n}\n\nexport interface UserDesktopAccessInfoStatus extends _UserDesktopAccessInfoStatus {\n    _builtin_original?: _UserDesktopAccessInfoStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserDesktopAccessInfoStatusImpl  implements _UserDesktopAccessInfoStatus {\n    _builtin_original?: _UserDesktopAccessInfoStatus = undefined;\n    public user_id: string ;\n    public org_id: string ;\n    public org_name: string ;\n    public parent_org_id: string  | undefined ;\n    public parent_org_name: string  | undefined ;\n    public resource_id: string ;\n    public resource_name: string ;\n    public resource_type: string ;\n    public desktop_type: UserDesktopAccessInfoStatus.DesktopTypeEnum ;\n    public resource_uri: string  | undefined ;\n    public access_level: UserDesktopAccessInfoStatus.AccessLevelEnum ;\n    public roles: Array<string>  | undefined ;\n    public remote_app: RemoteAppAccessInfo  | undefined ;\n    public display_info: DisplayInfo  | undefined ;\n    public web_client_uri: string  | undefined ;\n    public config_overrides: Array<CustomDesktopClientConfig>  | undefined ;\n    public config_overrides_error: string | null  | undefined ;\n    public readonly updated: Date  | undefined ;\n    constructor(base: _UserDesktopAccessInfoStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_name') >= 0) {\n            this.org_name = base.org_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'parent_org_id') >= 0) {\n            this.parent_org_id = base.parent_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'parent_org_name') >= 0) {\n            this.parent_org_name = base.parent_org_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_id') >= 0) {\n            this.resource_id = base.resource_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_name') >= 0) {\n            this.resource_name = base.resource_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_type') >= 0) {\n            this.resource_type = base.resource_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'desktop_type') >= 0) {\n            this.desktop_type = base.desktop_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_uri') >= 0) {\n            this.resource_uri = base.resource_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'access_level') >= 0) {\n            this.access_level = base.access_level;\n        }\n        if (Object.keys(base).findIndex(key => key === 'roles') >= 0) {\n            this.roles = base.roles;\n        }\n        if (Object.keys(base).findIndex(key => key === 'remote_app') >= 0) {\n            this.remote_app = base.remote_app;\n        }\n        if (Object.keys(base).findIndex(key => key === 'display_info') >= 0) {\n            this.display_info = base.display_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'web_client_uri') >= 0) {\n            this.web_client_uri = base.web_client_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'config_overrides') >= 0) {\n            if (base.config_overrides) {\n                this.config_overrides = base.config_overrides.map((original) => newCustomDesktopClientConfigImpl(original));\n            } else {\n                this.config_overrides = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'config_overrides_error') >= 0) {\n            this.config_overrides_error = base.config_overrides_error;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.config_overrides !== undefined) {\n            for (const item of this.config_overrides) {\n                if (item !== undefined && (item as CustomDesktopClientConfigImpl)._remove_builtin_extensions !== undefined) {\n                    (item as CustomDesktopClientConfigImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace UserDesktopAccessInfoStatus {\n    export type DesktopTypeEnum = 'rdp' | 'vnc';\n    export const DesktopTypeEnum = {\n        rdp: 'rdp' as DesktopTypeEnum,\n        vnc: 'vnc' as DesktopTypeEnum\n    };\n    export type AccessLevelEnum = 'requested' | 'granted' | 'none';\n    export const AccessLevelEnum = {\n        requested: 'requested' as AccessLevelEnum,\n        granted: 'granted' as AccessLevelEnum,\n        none: 'none' as AccessLevelEnum\n    };\n}\n\n\nexport function newUserDesktopAccessInfoStatusImpl(base: _UserDesktopAccessInfoStatus): UserDesktopAccessInfoStatusImpl {\n    return new UserDesktopAccessInfoStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _FileShareClientConfig, FileShareClientConfig, FileShareClientConfigImpl, newFileShareClientConfigImpl } from './fileShareClientConfig';\nimport { _DisplayInfo, DisplayInfo, DisplayInfoImpl, newDisplayInfoImpl } from './displayInfo';\n\n\n/**\n * The read-only details of a UserFileShareAcessInfo.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserFileShareAccessInfoStatus { \n    /**\n     * The unique id of the User to which this record applies. \n     */\n    user_id: string;\n    /**\n     * The unique id of the Organisation to which this record applies. \n     */\n    org_id: string;\n    /**\n     * The name of Organisation to which this record applies. \n     */\n    org_name: string;\n    /**\n     * The unique id of the parent of the Organisation to which this record applies. Omitted if the Organisation has no parent. \n     */\n    parent_org_id?: string;\n    /**\n     * The name of the parent of the Organisation to which this record applies. Omitted if the Organisation has no parent. \n     */\n    parent_org_name?: string;\n    /**\n     * Unique identifier\n     */\n    readonly share_id: string;\n    /**\n     * The file share name. \n     */\n    share_name: string;\n    /**\n     * The url of the share \n     */\n    share_url: string;\n    /**\n     * The url of the share when it has a unique domain. \n     */\n    per_host_share_url?: string;\n    /**\n     * Whether the user has access, has requested access, etc. The possible values have the following meanings:   - requested: the user has requested access to this instance.   - granted: the user has access to this instance.   - none: the user has no relation to this application. \n     */\n    access_level: UserFileShareAccessInfoStatus.AccessLevelEnum;\n    share_config?: FileShareClientConfig;\n    /**\n     * The list of roles held by the user for the given share\n     */\n    roles?: Array<string>;\n    display_info?: DisplayInfo;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n}\n\nexport interface UserFileShareAccessInfoStatus extends _UserFileShareAccessInfoStatus {\n    _builtin_original?: _UserFileShareAccessInfoStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserFileShareAccessInfoStatusImpl  implements _UserFileShareAccessInfoStatus {\n    _builtin_original?: _UserFileShareAccessInfoStatus = undefined;\n    public user_id: string ;\n    public org_id: string ;\n    public org_name: string ;\n    public parent_org_id: string  | undefined ;\n    public parent_org_name: string  | undefined ;\n    public readonly share_id: string ;\n    public share_name: string ;\n    public share_url: string ;\n    public per_host_share_url: string  | undefined ;\n    public access_level: UserFileShareAccessInfoStatus.AccessLevelEnum ;\n    public share_config: FileShareClientConfig  | undefined ;\n    public roles: Array<string>  | undefined ;\n    public display_info: DisplayInfo  | undefined ;\n    public readonly updated: Date  | undefined ;\n    constructor(base: _UserFileShareAccessInfoStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_name') >= 0) {\n            this.org_name = base.org_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'parent_org_id') >= 0) {\n            this.parent_org_id = base.parent_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'parent_org_name') >= 0) {\n            this.parent_org_name = base.parent_org_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'share_id') >= 0) {\n            this.share_id = base.share_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'share_name') >= 0) {\n            this.share_name = base.share_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'share_url') >= 0) {\n            this.share_url = base.share_url;\n        }\n        if (Object.keys(base).findIndex(key => key === 'per_host_share_url') >= 0) {\n            this.per_host_share_url = base.per_host_share_url;\n        }\n        if (Object.keys(base).findIndex(key => key === 'access_level') >= 0) {\n            this.access_level = base.access_level;\n        }\n        if (Object.keys(base).findIndex(key => key === 'share_config') >= 0) {\n            this.share_config = base.share_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'roles') >= 0) {\n            this.roles = base.roles;\n        }\n        if (Object.keys(base).findIndex(key => key === 'display_info') >= 0) {\n            this.display_info = base.display_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace UserFileShareAccessInfoStatus {\n    export type AccessLevelEnum = 'requested' | 'granted' | 'none';\n    export const AccessLevelEnum = {\n        requested: 'requested' as AccessLevelEnum,\n        granted: 'granted' as AccessLevelEnum,\n        none: 'none' as AccessLevelEnum\n    };\n}\n\n\nexport function newUserFileShareAccessInfoStatusImpl(base: _UserFileShareAccessInfoStatus): UserFileShareAccessInfoStatusImpl {\n    return new UserFileShareAccessInfoStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserIdentityUpdateSpec, UserIdentityUpdateSpec, UserIdentityUpdateSpecImpl, newUserIdentityUpdateSpecImpl } from './userIdentityUpdateSpec';\n\n\n/**\n * Updates a user\\'s core identity information. This is typically done as part of a login process, though a user can update their own information at any time. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserIdentityUpdate { \n    spec: UserIdentityUpdateSpec;\n}\n\nexport interface UserIdentityUpdate extends _UserIdentityUpdate {\n    _builtin_original?: _UserIdentityUpdate;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserIdentityUpdateImpl  implements _UserIdentityUpdate {\n    _builtin_original?: _UserIdentityUpdate = undefined;\n    public spec: UserIdentityUpdateSpec ;\n    constructor(base: _UserIdentityUpdate) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'spec') >= 0) {\n            this.spec = base.spec;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUserIdentityUpdateImpl(base: _UserIdentityUpdate): UserIdentityUpdateImpl {\n    return new UserIdentityUpdateImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserAttributes, UserAttributes, UserAttributesImpl, newUserAttributesImpl } from './userAttributes';\n\n\n/**\n * Core identity information to be applied to a user. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserIdentityUpdateSpec { \n    /**\n     * User\\'s email address\n     */\n    primary_email?: string;\n    /**\n     * User\\'s first name\n     */\n    first_name?: string;\n    /**\n     * User\\'s last name\n     */\n    last_name?: string;\n    attributes?: UserAttributes;\n}\n\nexport interface UserIdentityUpdateSpec extends _UserIdentityUpdateSpec {\n    _builtin_original?: _UserIdentityUpdateSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserIdentityUpdateSpecImpl  implements _UserIdentityUpdateSpec {\n    _builtin_original?: _UserIdentityUpdateSpec = undefined;\n    public primary_email: string  | undefined ;\n    public first_name: string  | undefined ;\n    public last_name: string  | undefined ;\n    public attributes: UserAttributes  | undefined ;\n    constructor(base: _UserIdentityUpdateSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'primary_email') >= 0) {\n            this.primary_email = base.primary_email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'first_name') >= 0) {\n            this.first_name = base.first_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_name') >= 0) {\n            this.last_name = base.last_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'attributes') >= 0) {\n            this.attributes = base.attributes;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUserIdentityUpdateSpecImpl(base: _UserIdentityUpdateSpec): UserIdentityUpdateSpecImpl {\n    return new UserIdentityUpdateSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _Organisation, Organisation, OrganisationImpl, newOrganisationImpl } from './organisation';\n\n\n/**\n * Information about the user that is logging in\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserInfo { \n    /**\n     * access token\n     */\n    token?: string;\n    /**\n     * list of orgs user belongs to\n     */\n    readonly orgs?: Array<Organisation>;\n}\n\nexport interface UserInfo extends _UserInfo {\n    _builtin_original?: _UserInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserInfoImpl  implements _UserInfo {\n    _builtin_original?: _UserInfo = undefined;\n    public token: string  | undefined ;\n    public readonly orgs: Array<Organisation>  | undefined ;\n    constructor(base: _UserInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'token') >= 0) {\n            this.token = base.token;\n        }\n        if (Object.keys(base).findIndex(key => key === 'orgs') >= 0) {\n            if (base.orgs) {\n                this.orgs = base.orgs.map((original) => newOrganisationImpl(original));\n            } else {\n                this.orgs = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.orgs !== undefined) {\n            for (const item of this.orgs) {\n                if (item !== undefined && (item as OrganisationImpl)._remove_builtin_extensions !== undefined) {\n                    (item as OrganisationImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newUserInfoImpl(base: _UserInfo): UserInfoImpl {\n    return new UserInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _UserIdentity, UserIdentity, UserIdentityImpl, newUserIdentityImpl } from './userIdentity';\n\n\n/**\n * Groups that the user is a member of\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserMemberOf { \n    /**\n     * List of groups that the user is a member of\n     */\n    member_of?: Array<UserIdentity>;\n}\n\nexport interface UserMemberOf extends _UserMemberOf {\n    _builtin_original?: _UserMemberOf;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserMemberOfImpl  implements _UserMemberOf {\n    _builtin_original?: _UserMemberOf = undefined;\n    public member_of: Array<UserIdentity>  | undefined ;\n    constructor(base: _UserMemberOf) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'member_of') >= 0) {\n            if (base.member_of) {\n                this.member_of = base.member_of.map((original) => newUserIdentityImpl(original));\n            } else {\n                this.member_of = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.member_of !== undefined) {\n            for (const item of this.member_of) {\n                if (item !== undefined && (item as UserIdentityImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserIdentityImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newUserMemberOfImpl(base: _UserMemberOf): UserMemberOfImpl {\n    return new UserMemberOfImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A generic data entry for a given user. The entry is tied to specific org, application or combination. The entries type describes how to interpret the value. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserMetadataSpec { \n    /**\n     * The unique id of the User to which this record applies. \n     */\n    user_id: string;\n    /**\n     * The unique id of the Organisation to which this record applies. \n     */\n    org_id?: string | null;\n    /**\n     * The unique id of the application to which this record applies. \n     */\n    app_id?: string | null;\n    /**\n     * A descriptive name for this metadata entry\n     */\n    name?: string;\n    /**\n     * The type of data present in the configuration. This informs consumers of how to use the data present. The \\'json\\' type means no internal interpretation is done, it is a string-in/string-out. On query this can be deep-merged with member groups. \n     */\n    data_type?: UserMetadataSpec.DataTypeEnum;\n    /**\n     * The string representation of the data. This value is interpretted differently based on the data_type\n     */\n    data?: string;\n}\n\nexport interface UserMetadataSpec extends _UserMetadataSpec {\n    _builtin_original?: _UserMetadataSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserMetadataSpecImpl  implements _UserMetadataSpec {\n    _builtin_original?: _UserMetadataSpec = undefined;\n    public user_id: string ;\n    public org_id: string | null  | undefined ;\n    public app_id: string | null  | undefined ;\n    public name: string  | undefined ;\n    public data_type: UserMetadataSpec.DataTypeEnum  | undefined ;\n    public data: string  | undefined ;\n    constructor(base: _UserMetadataSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'app_id') >= 0) {\n            this.app_id = base.app_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'name') >= 0) {\n            this.name = base.name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'data_type') >= 0) {\n            this.data_type = base.data_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'data') >= 0) {\n            this.data = base.data;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace UserMetadataSpec {\n    export type DataTypeEnum = 'mfa_enrollment_expiry' | 'user_app_data' | 'user_org_data' | 'json';\n    export const DataTypeEnum = {\n        mfa_enrollment_expiry: 'mfa_enrollment_expiry' as DataTypeEnum,\n        user_app_data: 'user_app_data' as DataTypeEnum,\n        user_org_data: 'user_org_data' as DataTypeEnum,\n        json: 'json' as DataTypeEnum\n    };\n}\n\n\nexport function newUserMetadataSpecImpl(base: _UserMetadataSpec): UserMetadataSpecImpl {\n    return new UserMetadataSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The specification for an user request\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserRequestInfoSpec { \n    /**\n     * The unique id of the User to which this record applies. \n     */\n    user_id: string;\n    /**\n     * The unique id of the Organisation to which this record applies. \n     */\n    org_id: string;\n    /**\n     * The resource the user is requesting. For example an application id if the request_type is application. If the request_type is fileshare, this would be the file share id. \n     */\n    requested_resource: string;\n    /**\n     * A resource tied to the resource the user is requesting. For example, this could be the name of a role if the request_type is application_access. \n     */\n    requested_sub_resource?: string;\n    /**\n     * The type of request a user is making. Note that `application_access` and `file_share_access` are deprecated. They have been replaced with `application` and `fileshare` respectively. \n     */\n    requested_resource_type: UserRequestInfoSpec.RequestedResourceTypeEnum;\n    /**\n     * Text describing why the user is requesting application access\n     */\n    request_information?: string;\n    /**\n     * The state of the resource access request\n     */\n    state?: UserRequestInfoSpec.StateEnum;\n    /**\n     * Optionally the beginning of the time period at which the permissions will be granted once approved. \n     */\n    from_date?: Date;\n    /**\n     * Optionally the end of the time period at which the permissions will be granted once approved. \n     */\n    to_date?: Date;\n    /**\n     * An optional expiry time for the request. After the request has expired, it cannot be accepted or declined. If not set, the request never expires. Will default to the `to_date` if the `to_date` is set and `expiry_date` is not. \n     */\n    expiry_date?: Date;\n    /**\n     * Optional text describing the response of the request after it has been approved or declined.\n     */\n    response_information?: string;\n}\n\nexport interface UserRequestInfoSpec extends _UserRequestInfoSpec {\n    _builtin_original?: _UserRequestInfoSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserRequestInfoSpecImpl  implements _UserRequestInfoSpec {\n    _builtin_original?: _UserRequestInfoSpec = undefined;\n    public user_id: string ;\n    public org_id: string ;\n    public requested_resource: string ;\n    public requested_sub_resource: string  | undefined ;\n    public requested_resource_type: UserRequestInfoSpec.RequestedResourceTypeEnum ;\n    public request_information: string  | undefined ;\n    public state: UserRequestInfoSpec.StateEnum  | undefined ;\n    public from_date: Date  | undefined ;\n    public to_date: Date  | undefined ;\n    public expiry_date: Date  | undefined ;\n    public response_information: string  | undefined ;\n    constructor(base: _UserRequestInfoSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requested_resource') >= 0) {\n            this.requested_resource = base.requested_resource;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requested_sub_resource') >= 0) {\n            this.requested_sub_resource = base.requested_sub_resource;\n        }\n        if (Object.keys(base).findIndex(key => key === 'requested_resource_type') >= 0) {\n            this.requested_resource_type = base.requested_resource_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'request_information') >= 0) {\n            this.request_information = base.request_information;\n        }\n        if (Object.keys(base).findIndex(key => key === 'state') >= 0) {\n            this.state = base.state;\n        }\n        if (Object.keys(base).findIndex(key => key === 'from_date') >= 0) {\n            this.from_date = base.from_date;\n        }\n        if (Object.keys(base).findIndex(key => key === 'to_date') >= 0) {\n            this.to_date = base.to_date;\n        }\n        if (Object.keys(base).findIndex(key => key === 'expiry_date') >= 0) {\n            this.expiry_date = base.expiry_date;\n        }\n        if (Object.keys(base).findIndex(key => key === 'response_information') >= 0) {\n            this.response_information = base.response_information;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace UserRequestInfoSpec {\n    export type RequestedResourceTypeEnum = 'application_access' | 'file_share_access' | 'application' | 'fileshare' | 'application_service' | 'desktop' | 'launcher' | 'ssh' | 'database';\n    export const RequestedResourceTypeEnum = {\n        application_access: 'application_access' as RequestedResourceTypeEnum,\n        file_share_access: 'file_share_access' as RequestedResourceTypeEnum,\n        application: 'application' as RequestedResourceTypeEnum,\n        fileshare: 'fileshare' as RequestedResourceTypeEnum,\n        application_service: 'application_service' as RequestedResourceTypeEnum,\n        desktop: 'desktop' as RequestedResourceTypeEnum,\n        launcher: 'launcher' as RequestedResourceTypeEnum,\n        ssh: 'ssh' as RequestedResourceTypeEnum,\n        database: 'database' as RequestedResourceTypeEnum\n    };\n    export type StateEnum = 'pending' | 'approved' | 'declined';\n    export const StateEnum = {\n        pending: 'pending' as StateEnum,\n        approved: 'approved' as StateEnum,\n        declined: 'declined' as StateEnum\n    };\n}\n\n\nexport function newUserRequestInfoSpecImpl(base: _UserRequestInfoSpec): UserRequestInfoSpecImpl {\n    return new UserRequestInfoSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The status information for a user request\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserRequestInfoStatus { \n    /**\n     * User\\'s email address\n     */\n    email?: string;\n    /**\n     * The unique ID of a challenge associated with this request. It tracks approval of the request. The user may poll it to determine whether the request was approved or rejected. \n     */\n    challenge_id?: string;\n    /**\n     * Whether or not this request has expired\n     */\n    expired?: boolean;\n}\n\nexport interface UserRequestInfoStatus extends _UserRequestInfoStatus {\n    _builtin_original?: _UserRequestInfoStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserRequestInfoStatusImpl  implements _UserRequestInfoStatus {\n    _builtin_original?: _UserRequestInfoStatus = undefined;\n    public email: string  | undefined ;\n    public challenge_id: string  | undefined ;\n    public expired: boolean  | undefined ;\n    constructor(base: _UserRequestInfoStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'email') >= 0) {\n            this.email = base.email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'challenge_id') >= 0) {\n            this.challenge_id = base.challenge_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'expired') >= 0) {\n            this.expired = base.expired;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUserRequestInfoStatusImpl(base: _UserRequestInfoStatus): UserRequestInfoStatusImpl {\n    return new UserRequestInfoStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _DisplayInfo, DisplayInfo, DisplayInfoImpl, newDisplayInfoImpl } from './displayInfo';\n\n\n/**\n * The read-only details of a UserFileShareAcessInfo.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserResourceAccessInfoStatus { \n    /**\n     * The unique id of the User to which this record applies. \n     */\n    user_id: string;\n    /**\n     * The unique id of the Organisation to which this record applies. \n     */\n    org_id: string;\n    /**\n     * The name of Organisation to which this record applies. \n     */\n    org_name: string;\n    /**\n     * The unique id of the parent of the Organisation to which this record applies. Omitted if the Organisation has no parent. \n     */\n    parent_org_id?: string;\n    /**\n     * The name of the parent of the Organisation to which this record applies. Omitted if the Organisation has no parent. \n     */\n    parent_org_name?: string;\n    /**\n     * Unique identifier\n     */\n    resource_id: string;\n    /**\n     * The name of the resource. \n     */\n    resource_name: string;\n    /**\n     * The type of the resource. \n     */\n    resource_type: string;\n    /**\n     * Many resources have corresponding URIs which may be used to access them. This field provides the URI for the resource represented by this object. \n     */\n    resource_uri?: string;\n    /**\n     * Whether the user has access, has requested access, etc. The possible values have the following meanings:   - requested: the user has requested access to this resource.   - granted: the user has access to this resource   - none: the user has no relation to this resource. \n     */\n    access_level: UserResourceAccessInfoStatus.AccessLevelEnum;\n    /**\n     * The list of roles held by the user for the given resource.\n     */\n    roles?: Array<string>;\n    display_info?: DisplayInfo;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n}\n\nexport interface UserResourceAccessInfoStatus extends _UserResourceAccessInfoStatus {\n    _builtin_original?: _UserResourceAccessInfoStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserResourceAccessInfoStatusImpl  implements _UserResourceAccessInfoStatus {\n    _builtin_original?: _UserResourceAccessInfoStatus = undefined;\n    public user_id: string ;\n    public org_id: string ;\n    public org_name: string ;\n    public parent_org_id: string  | undefined ;\n    public parent_org_name: string  | undefined ;\n    public resource_id: string ;\n    public resource_name: string ;\n    public resource_type: string ;\n    public resource_uri: string  | undefined ;\n    public access_level: UserResourceAccessInfoStatus.AccessLevelEnum ;\n    public roles: Array<string>  | undefined ;\n    public display_info: DisplayInfo  | undefined ;\n    public readonly updated: Date  | undefined ;\n    constructor(base: _UserResourceAccessInfoStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_name') >= 0) {\n            this.org_name = base.org_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'parent_org_id') >= 0) {\n            this.parent_org_id = base.parent_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'parent_org_name') >= 0) {\n            this.parent_org_name = base.parent_org_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_id') >= 0) {\n            this.resource_id = base.resource_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_name') >= 0) {\n            this.resource_name = base.resource_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_type') >= 0) {\n            this.resource_type = base.resource_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_uri') >= 0) {\n            this.resource_uri = base.resource_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'access_level') >= 0) {\n            this.access_level = base.access_level;\n        }\n        if (Object.keys(base).findIndex(key => key === 'roles') >= 0) {\n            this.roles = base.roles;\n        }\n        if (Object.keys(base).findIndex(key => key === 'display_info') >= 0) {\n            this.display_info = base.display_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace UserResourceAccessInfoStatus {\n    export type AccessLevelEnum = 'requested' | 'granted' | 'none';\n    export const AccessLevelEnum = {\n        requested: 'requested' as AccessLevelEnum,\n        granted: 'granted' as AccessLevelEnum,\n        none: 'none' as AccessLevelEnum\n    };\n}\n\n\nexport function newUserResourceAccessInfoStatusImpl(base: _UserResourceAccessInfoStatus): UserResourceAccessInfoStatusImpl {\n    return new UserResourceAccessInfoStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _DisplayInfo, DisplayInfo, DisplayInfoImpl, newDisplayInfoImpl } from './displayInfo';\n\n\n/**\n * The read-only details of a UserSSHAccessInfo.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserSSHAccessInfoStatus { \n    /**\n     * The unique id of the User to which this record applies. \n     */\n    user_id: string;\n    /**\n     * The unique id of the Organisation to which this record applies. \n     */\n    org_id: string;\n    /**\n     * The name of Organisation to which this record applies. \n     */\n    org_name: string;\n    /**\n     * The unique id of the parent of the Organisation to which this record applies. Omitted if the Organisation has no parent. \n     */\n    parent_org_id?: string;\n    /**\n     * The name of the parent of the Organisation to which this record applies. Omitted if the Organisation has no parent. \n     */\n    parent_org_name?: string;\n    /**\n     * Unique identifier\n     */\n    resource_id: string;\n    /**\n     * The name of the resource. \n     */\n    resource_name: string;\n    /**\n     * The type of the resource. \n     */\n    resource_type: string;\n    /**\n     * The address of the ssh resource. \n     */\n    hostname?: string;\n    /**\n     * The port to connect to. If empty, will default to port 22. \n     */\n    port?: number;\n    /**\n     * Whether the user has access, has requested access, etc. The possible values have the following meanings:   - requested: the user has requested access to this resource.   - granted: the user has access to this resource   - none: the user has no relation to this resource. \n     */\n    access_level: UserSSHAccessInfoStatus.AccessLevelEnum;\n    /**\n     * The list of roles held by the user for the given resource.\n     */\n    roles?: Array<string>;\n    display_info?: DisplayInfo;\n    /**\n     * Many resources have corresponding URIs which may be used to access them. This field provides the URI for the resource represented by this object. \n     */\n    resource_uri?: string;\n    /**\n     * Many resources may be accessed via a gateway. This field provides provides the URI for the gateway, if any, providing access to this object. \n     */\n    gateway_uri?: string;\n    /**\n     * When configured, will generate appropriate ssh configuration. For example, openssh configuration using username would appear as:    Host name       User username \n     */\n    username?: string | null;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n}\n\nexport interface UserSSHAccessInfoStatus extends _UserSSHAccessInfoStatus {\n    _builtin_original?: _UserSSHAccessInfoStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserSSHAccessInfoStatusImpl  implements _UserSSHAccessInfoStatus {\n    _builtin_original?: _UserSSHAccessInfoStatus = undefined;\n    public user_id: string ;\n    public org_id: string ;\n    public org_name: string ;\n    public parent_org_id: string  | undefined ;\n    public parent_org_name: string  | undefined ;\n    public resource_id: string ;\n    public resource_name: string ;\n    public resource_type: string ;\n    public hostname: string  | undefined ;\n    public port: number  | undefined ;\n    public access_level: UserSSHAccessInfoStatus.AccessLevelEnum ;\n    public roles: Array<string>  | undefined ;\n    public display_info: DisplayInfo  | undefined ;\n    public resource_uri: string  | undefined ;\n    public gateway_uri: string  | undefined ;\n    public username: string | null  | undefined ;\n    public readonly updated: Date  | undefined ;\n    constructor(base: _UserSSHAccessInfoStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_name') >= 0) {\n            this.org_name = base.org_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'parent_org_id') >= 0) {\n            this.parent_org_id = base.parent_org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'parent_org_name') >= 0) {\n            this.parent_org_name = base.parent_org_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_id') >= 0) {\n            this.resource_id = base.resource_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_name') >= 0) {\n            this.resource_name = base.resource_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_type') >= 0) {\n            this.resource_type = base.resource_type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'hostname') >= 0) {\n            this.hostname = base.hostname;\n        }\n        if (Object.keys(base).findIndex(key => key === 'port') >= 0) {\n            this.port = base.port;\n        }\n        if (Object.keys(base).findIndex(key => key === 'access_level') >= 0) {\n            this.access_level = base.access_level;\n        }\n        if (Object.keys(base).findIndex(key => key === 'roles') >= 0) {\n            this.roles = base.roles;\n        }\n        if (Object.keys(base).findIndex(key => key === 'display_info') >= 0) {\n            this.display_info = base.display_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'resource_uri') >= 0) {\n            this.resource_uri = base.resource_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'gateway_uri') >= 0) {\n            this.gateway_uri = base.gateway_uri;\n        }\n        if (Object.keys(base).findIndex(key => key === 'username') >= 0) {\n            this.username = base.username;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace UserSSHAccessInfoStatus {\n    export type AccessLevelEnum = 'requested' | 'granted' | 'none';\n    export const AccessLevelEnum = {\n        requested: 'requested' as AccessLevelEnum,\n        granted: 'granted' as AccessLevelEnum,\n        none: 'none' as AccessLevelEnum\n    };\n}\n\n\nexport function newUserSSHAccessInfoStatusImpl(base: _UserSSHAccessInfoStatus): UserSSHAccessInfoStatusImpl {\n    return new UserSSHAccessInfoStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * parameters used to constrain which sessions will be acted on. (Revoked, deleted, etc)\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserSessionIdentifiers { \n    /**\n     * The unique id of the User associated with the session \n     */\n    user_id: string;\n    /**\n     * The unique id of the Organisation associated with the Issuer the user logged in to \n     */\n    org_id?: string;\n    /**\n     * The unique id of an explicit session to revoke. \n     */\n    session_id?: string;\n    /**\n     * Controls whether to revoke only the tokens, keeping the session live. If true, all related tokens are revoked, but the session is left intact. False by default. This setting lets you revoke any outstanding logins associated with this session -- as part of forcing a logout, for example, while still allowing the user to log in with the saved session. \n     */\n    tokens_only?: boolean;\n}\n\nexport interface UserSessionIdentifiers extends _UserSessionIdentifiers {\n    _builtin_original?: _UserSessionIdentifiers;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserSessionIdentifiersImpl  implements _UserSessionIdentifiers {\n    _builtin_original?: _UserSessionIdentifiers = undefined;\n    public user_id: string ;\n    public org_id: string  | undefined ;\n    public session_id: string  | undefined ;\n    public tokens_only: boolean  | undefined ;\n    constructor(base: _UserSessionIdentifiers) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'session_id') >= 0) {\n            this.session_id = base.session_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'tokens_only') >= 0) {\n            this.tokens_only = base.tokens_only;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newUserSessionIdentifiersImpl(base: _UserSessionIdentifiers): UserSessionIdentifiersImpl {\n    return new UserSessionIdentifiersImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The status of the user within the organisation. The status of a user within the organisation controls their visibility, as well as their access to various components of the system. Changing the status will change how the user interacts with the organisation and its applications. The status values have the following meanings:   * `active`: The user is a full member of the organisation. They will appear by default     in queries for the organisation\\'s members. They will be able to log in and access     any applications for which they have permission.   * `pending`: The user has requested access to the organisation. They are waiting for     full membership to be granted by an administrator. A pending user will not show     by default in queries for the organisation\\'s members. They can log in to view     their profile and request access to applications. A pending user can log in and     access any application to which they have been granted access. Note: this will     likely change in the future.   * `disabled`: A disabled user will not show by default in queries for the organisation\\'s members.     The user will not be able to log in. The user will not be able to access applications, even if     they previously had access when they were not disabled. \n */\nexport type _UserStatusEnum = 'active' | 'pending' | 'disabled';\nexport type UserStatusEnum = _UserStatusEnum\n\nexport type UserStatusEnumImpl = UserStatusEnum;\nexport const UserStatusEnum = {\n    active: 'active' as UserStatusEnum,\n    pending: 'pending' as UserStatusEnum,\n    disabled: 'disabled' as UserStatusEnum\n};\n\nexport function newUserStatusEnumImpl(base: _UserStatusEnum): UserStatusEnumImpl {\n    return base;\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _InheritableUserConfig, InheritableUserConfig, InheritableUserConfigImpl, newInheritableUserConfigImpl } from './inheritableUserConfig';\nimport { _UserAttribute, UserAttribute, UserAttributeImpl, newUserAttributeImpl } from './userAttribute';\nimport { _UpstreamUserIdentity, UpstreamUserIdentity, UpstreamUserIdentityImpl, newUpstreamUserIdentityImpl } from './upstreamUserIdentity';\nimport { _UserAttributes, UserAttributes, UserAttributesImpl, newUserAttributesImpl } from './userAttributes';\nimport { _UserStatusEnum, UserStatusEnum, UserStatusEnumImpl, newUserStatusEnumImpl } from './userStatusEnum';\n\n\n/**\n * A per-organisation view of a user. This will contain properties associated with a user that are specific to the organisation with which they are interacting. Note that many of the properties are inherited from the UserIdentity of the user. These may not be modified. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _UserSummary { \n    /**\n     * Unique identifier\n     */\n    readonly id?: string;\n    /**\n     * External unique identifier\n     */\n    external_id?: string | null;\n    /**\n     * Indicates if the user is enabled or disabled. This field is managed by the backend based on the users configured status, along with the disabled_at_time property if that is set. \n     */\n    readonly enabled?: boolean;\n    status?: UserStatusEnum;\n    /**\n     * User\\'s first name\n     */\n    first_name?: string;\n    /**\n     * User\\'s last name\n     */\n    last_name?: string;\n    /**\n     * User\\'s full name, combination of first and last name\n     */\n    full_name?: string;\n    /**\n     * User\\'s email address\n     */\n    email?: string;\n    /**\n     * A suitable, simplified name of the user that can be used to identify a user. For users of type \\\"user\\\", this would be the users email. For other user types (group), the first_name would be used as the display_name. This does introduce the possiblity that multiple users may have identical display names. In this situation, it would be up to the consumer of this to de-duplicate the users (such as also display the users email alongside).  examples:     display_name: user@example.com     display_name: all_users_group \n     */\n    readonly display_name?: string;\n    /**\n     * Upstream IdP name\n     */\n    provider?: string | null;\n    /**\n     * An associative array mapping an application to a list of roles\n     */\n    roles?: { [key: string]: Array<string> | undefined; };\n    /**\n     * Unique identifier\n     */\n    org_id?: string;\n    /**\n     * Type of user\n     */\n    readonly type?: UserSummary.TypeEnum;\n    /**\n     * Creation time\n     */\n    readonly created?: Date;\n    /**\n     * Update time\n     */\n    readonly updated?: Date;\n    /**\n     * Whether the user was automatically created as part of another process such as logging in. On creation, this flag being true serves to trigger any behaviour tied to automatically created users, such as addition to special groups. On read, it can serve to indicate whether the user was automatically created. On update it will ensure that the automatically triggered behaviour still holds true. \n     */\n    auto_created?: boolean;\n    /**\n     * System users are controlled by the Agilicus infrastructure as part of providing service. Typically administrators and end users will not interact directly with them, so they should be hidden from display, unless explicitly toggled on. \n     */\n    is_system_user?: boolean;\n    /**\n     * The upstream identities this user can use to log in to the system. When a user logs in, their identity in this system will be determined by matching against this list. Note that this implies that entries in this list are globally unique. \n     */\n    readonly upstream_user_identities?: Array<UpstreamUserIdentity>;\n    /**\n     * Whether the user will be added to sub organisations automatically. When set for a user that is a member of a particular organisation, subsequent creations of sub organisations will add this user to that suborgansation. \n     */\n    cascade?: boolean;\n    configured_attributes?: UserAttributes;\n    /**\n     * The live attributes of the user, as determined from all sources of attributes. A user\\'s attributes flow from all of their upstream_user_identities as well as the `configured_attributes` field. Attributes are merged by name. If two sources of attributes have an attribute with the same name, that attribute will be merged. For cases where a merge is not possible -- e.g. two attributes with different types -- the oldest source of identity will be used. The `configured_attributes` field is always considered the oldest, so it has priority. Further, the resulting items will be sorted in ascending order of name.  For example, considering a user with following two sources of attributes:  ``` older_upstream:   - name: manager     value: best-manager   - name: groups     value: [\\\"A\\\", \\\"B\\\"] newer_upstream:   - name: manager     value: other-manager   - name: groups     value: [\\\"C\\\"]   - name: age     value 32 ```  The resulting attributes will be:  ``` attributes:   - name: age     value 32   - name: groups     value: [\\\"A\\\", \\\"B\\\", \\\"C\\\"]   - name: manager     value: best-manager ``` \n     */\n    readonly attributes?: Array<UserAttribute>;\n    inheritable_config?: InheritableUserConfig;\n    inheritable_status?: InheritableUserConfig;\n    /**\n     * Optionally configure a user to be automatically disabled at a specific point in time. Any retrieval of the user object record past the disabled_at_time will result in the enabled property be set to false. \n     */\n    disabled_at_time?: Date | null;\n}\n\nexport interface UserSummary extends _UserSummary {\n    _builtin_original?: _UserSummary;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class UserSummaryImpl  implements _UserSummary {\n    _builtin_original?: _UserSummary = undefined;\n    public readonly id: string  | undefined ;\n    public external_id: string | null  | undefined ;\n    public readonly enabled: boolean  | undefined ;\n    public status: UserStatusEnum  | undefined ;\n    public first_name: string  | undefined ;\n    public last_name: string  | undefined ;\n    public full_name: string  | undefined ;\n    public email: string  | undefined ;\n    public readonly display_name: string  | undefined ;\n    public provider: string | null  | undefined ;\n    public roles: { [key: string]: Array<string> | undefined; }  | undefined ;\n    public org_id: string  | undefined ;\n    public readonly type: UserSummary.TypeEnum  | undefined ;\n    public readonly created: Date  | undefined ;\n    public readonly updated: Date  | undefined ;\n    public auto_created: boolean  | undefined ;\n    public is_system_user: boolean  | undefined ;\n    public readonly upstream_user_identities: Array<UpstreamUserIdentity>  | undefined ;\n    public cascade: boolean  | undefined ;\n    public configured_attributes: UserAttributes  | undefined ;\n    public readonly attributes: Array<UserAttribute>  | undefined ;\n    public inheritable_config: InheritableUserConfig  | undefined ;\n    public inheritable_status: InheritableUserConfig  | undefined ;\n    public disabled_at_time: Date | null  | undefined ;\n    constructor(base: _UserSummary) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id') >= 0) {\n            this.id = base.id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'external_id') >= 0) {\n            this.external_id = base.external_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'status') >= 0) {\n            this.status = base.status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'first_name') >= 0) {\n            this.first_name = base.first_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'last_name') >= 0) {\n            this.last_name = base.last_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'full_name') >= 0) {\n            this.full_name = base.full_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'email') >= 0) {\n            this.email = base.email;\n        }\n        if (Object.keys(base).findIndex(key => key === 'display_name') >= 0) {\n            this.display_name = base.display_name;\n        }\n        if (Object.keys(base).findIndex(key => key === 'provider') >= 0) {\n            this.provider = base.provider;\n        }\n        if (Object.keys(base).findIndex(key => key === 'roles') >= 0) {\n            this.roles = base.roles;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'type') >= 0) {\n            this.type = base.type;\n        }\n        if (Object.keys(base).findIndex(key => key === 'created') >= 0) {\n            this.created = base.created;\n        }\n        if (Object.keys(base).findIndex(key => key === 'updated') >= 0) {\n            this.updated = base.updated;\n        }\n        if (Object.keys(base).findIndex(key => key === 'auto_created') >= 0) {\n            this.auto_created = base.auto_created;\n        }\n        if (Object.keys(base).findIndex(key => key === 'is_system_user') >= 0) {\n            this.is_system_user = base.is_system_user;\n        }\n        if (Object.keys(base).findIndex(key => key === 'upstream_user_identities') >= 0) {\n            if (base.upstream_user_identities) {\n                this.upstream_user_identities = base.upstream_user_identities.map((original) => newUpstreamUserIdentityImpl(original));\n            } else {\n                this.upstream_user_identities = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'cascade') >= 0) {\n            this.cascade = base.cascade;\n        }\n        if (Object.keys(base).findIndex(key => key === 'configured_attributes') >= 0) {\n            this.configured_attributes = base.configured_attributes;\n        }\n        if (Object.keys(base).findIndex(key => key === 'attributes') >= 0) {\n            if (base.attributes) {\n                this.attributes = base.attributes.map((original) => newUserAttributeImpl(original));\n            } else {\n                this.attributes = undefined;\n            }\n        }\n        if (Object.keys(base).findIndex(key => key === 'inheritable_config') >= 0) {\n            this.inheritable_config = base.inheritable_config;\n        }\n        if (Object.keys(base).findIndex(key => key === 'inheritable_status') >= 0) {\n            this.inheritable_status = base.inheritable_status;\n        }\n        if (Object.keys(base).findIndex(key => key === 'disabled_at_time') >= 0) {\n            this.disabled_at_time = base.disabled_at_time;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.upstream_user_identities !== undefined) {\n            for (const item of this.upstream_user_identities) {\n                if (item !== undefined && (item as UpstreamUserIdentityImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UpstreamUserIdentityImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n        if (this.attributes !== undefined) {\n            for (const item of this.attributes) {\n                if (item !== undefined && (item as UserAttributeImpl)._remove_builtin_extensions !== undefined) {\n                    (item as UserAttributeImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace UserSummary {\n    export type TypeEnum = 'user' | 'group' | 'sysgroup' | 'bigroup' | 'service_account' | 'support_user';\n    export const TypeEnum = {\n        user: 'user' as TypeEnum,\n        group: 'group' as TypeEnum,\n        sysgroup: 'sysgroup' as TypeEnum,\n        bigroup: 'bigroup' as TypeEnum,\n        service_account: 'service_account' as TypeEnum,\n        support_user: 'support_user' as TypeEnum\n    };\n}\n\n\nexport function newUserSummaryImpl(base: _UserSummary): UserSummaryImpl {\n    return new UserSummaryImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _VNCPasswordAuthentication, VNCPasswordAuthentication, VNCPasswordAuthenticationImpl, newVNCPasswordAuthenticationImpl } from './vNCPasswordAuthentication';\n\n\n/**\n * The configuration required by the connector to connect to the vnc server\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _VNCConnectionInfo { \n    password_authentication_info?: VNCPasswordAuthentication;\n    /**\n     * By default, the connector runs a gateway which tries to adapt the client and server\\'s vnc protocols into mutually compatible versions. Occasionally this process can choose the wrong settings, leading to an unworkable VNC desktop. Setting this to true disables that functionality. Note that this could break deployments which otherwise worked, so it should only be used when necessary. \n     */\n    disable_gateway?: boolean;\n}\n\nexport interface VNCConnectionInfo extends _VNCConnectionInfo {\n    _builtin_original?: _VNCConnectionInfo;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class VNCConnectionInfoImpl  implements _VNCConnectionInfo {\n    _builtin_original?: _VNCConnectionInfo = undefined;\n    public password_authentication_info: VNCPasswordAuthentication  | undefined ;\n    public disable_gateway: boolean  | undefined ;\n    constructor(base: _VNCConnectionInfo) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'password_authentication_info') >= 0) {\n            this.password_authentication_info = base.password_authentication_info;\n        }\n        if (Object.keys(base).findIndex(key => key === 'disable_gateway') >= 0) {\n            this.disable_gateway = base.disable_gateway;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newVNCConnectionInfoImpl(base: _VNCConnectionInfo): VNCConnectionInfoImpl {\n    return new VNCConnectionInfoImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Password configuration for the connector to authenticate to the vnc server. Note that standard VNC authentication only supports passwords of length 8. Longer will be truncated when authenticating. The system will try its best to negotatiate a stronger authentication mechanism with the VNC server, thereby enabling longer passwords, but it may fall back on standard VNC authentication. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _VNCPasswordAuthentication { \n    /**\n     * The password which enables a vnc connection with enables user input\n     */\n    read_write_password?: string;\n    /**\n     * The username to use when connecting with user control.\n     */\n    read_write_username?: string;\n    /**\n     * The password which enables a vnc connection with no user control\n     */\n    read_only_password?: string;\n    /**\n     * The username to use when connecting with no user control\n     */\n    read_only_username?: string;\n}\n\nexport interface VNCPasswordAuthentication extends _VNCPasswordAuthentication {\n    _builtin_original?: _VNCPasswordAuthentication;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class VNCPasswordAuthenticationImpl  implements _VNCPasswordAuthentication {\n    _builtin_original?: _VNCPasswordAuthentication = undefined;\n    public read_write_password: string  | undefined ;\n    public read_write_username: string  | undefined ;\n    public read_only_password: string  | undefined ;\n    public read_only_username: string  | undefined ;\n    constructor(base: _VNCPasswordAuthentication) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'read_write_password') >= 0) {\n            this.read_write_password = base.read_write_password;\n        }\n        if (Object.keys(base).findIndex(key => key === 'read_write_username') >= 0) {\n            this.read_write_username = base.read_write_username;\n        }\n        if (Object.keys(base).findIndex(key => key === 'read_only_password') >= 0) {\n            this.read_only_password = base.read_only_password;\n        }\n        if (Object.keys(base).findIndex(key => key === 'read_only_username') >= 0) {\n            this.read_only_username = base.read_only_username;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newVNCPasswordAuthenticationImpl(base: _VNCPasswordAuthentication): VNCPasswordAuthenticationImpl {\n    return new VNCPasswordAuthenticationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The contents of the WebAuthN enrollment answer.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _WebAuthNEnrollmentAnswer { \n    /**\n     * Unique identifier\n     */\n    readonly user_id: string;\n    /**\n     * A base64 encoding of the credential ID choosen by the authenticator\n     */\n    credential_id: string;\n    /**\n     * JSON encoded collection of key-value mappings representing the contextual bindings of the relying party and client\n     */\n    client_data: string;\n    /**\n     * Opaque string representing the authentication data, and attestion statements.\n     */\n    authenticator_data?: string;\n    /**\n     * The raw signature from the authenticator. This value is only included in the Authentication Assertion Response. For details see https://developer.mozilla.org/en-US/docs/Web/API/AuthenticatorAssertionResponse\n     */\n    signature?: string;\n    /**\n     * The user handle returned from the authenticator. This is optionally included in the Authentication Assertion Response.\n     */\n    user_handle?: string;\n    /**\n     * List of supported transports for this enrolled credential\n     */\n    transports?: Array<WebAuthNEnrollmentAnswer.TransportsEnum>;\n}\n\nexport interface WebAuthNEnrollmentAnswer extends _WebAuthNEnrollmentAnswer {\n    _builtin_original?: _WebAuthNEnrollmentAnswer;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class WebAuthNEnrollmentAnswerImpl  implements _WebAuthNEnrollmentAnswer {\n    _builtin_original?: _WebAuthNEnrollmentAnswer = undefined;\n    public readonly user_id: string ;\n    public credential_id: string ;\n    public client_data: string ;\n    public authenticator_data: string  | undefined ;\n    public signature: string  | undefined ;\n    public user_handle: string  | undefined ;\n    public transports: Array<WebAuthNEnrollmentAnswer.TransportsEnum>  | undefined ;\n    constructor(base: _WebAuthNEnrollmentAnswer) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'credential_id') >= 0) {\n            this.credential_id = base.credential_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'client_data') >= 0) {\n            this.client_data = base.client_data;\n        }\n        if (Object.keys(base).findIndex(key => key === 'authenticator_data') >= 0) {\n            this.authenticator_data = base.authenticator_data;\n        }\n        if (Object.keys(base).findIndex(key => key === 'signature') >= 0) {\n            this.signature = base.signature;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_handle') >= 0) {\n            this.user_handle = base.user_handle;\n        }\n        if (Object.keys(base).findIndex(key => key === 'transports') >= 0) {\n            this.transports = base.transports;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace WebAuthNEnrollmentAnswer {\n    export type TransportsEnum = 'internal' | 'ble' | 'nfc' | 'usb' | 'cable' | 'hybrid';\n    export const TransportsEnum = {\n        internal: 'internal' as TransportsEnum,\n        ble: 'ble' as TransportsEnum,\n        nfc: 'nfc' as TransportsEnum,\n        usb: 'usb' as TransportsEnum,\n        cable: 'cable' as TransportsEnum,\n        hybrid: 'hybrid' as TransportsEnum\n    };\n}\n\n\nexport function newWebAuthNEnrollmentAnswerImpl(base: _WebAuthNEnrollmentAnswer): WebAuthNEnrollmentAnswerImpl {\n    return new WebAuthNEnrollmentAnswerImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The contents of the WebAuthN challenge enrollment.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _WebAuthNEnrollmentSpec { \n    /**\n     * Unique identifier\n     */\n    user_id: string;\n    /**\n     * Unique identifier\n     */\n    relying_party_id: string;\n    /**\n     * The format of the attestation statement for this challenge.\n     */\n    attestation_format?: string;\n    /**\n     * The relying parties attestation conveyance preference.\n     */\n    attestation_conveyance?: WebAuthNEnrollmentSpec.AttestationConveyanceEnum;\n    /**\n     * A WebAuthn Relying Party may require user verification for some of its operations but not for others, and may use this type to express its needs. \n     */\n    user_verification?: WebAuthNEnrollmentSpec.UserVerificationEnum;\n    /**\n     * An endpoint implmenting the Relying Party portion of the WebAuthN Protocol over a get/redirect-based transport. \n     */\n    http_endpoint?: string;\n}\n\nexport interface WebAuthNEnrollmentSpec extends _WebAuthNEnrollmentSpec {\n    _builtin_original?: _WebAuthNEnrollmentSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class WebAuthNEnrollmentSpecImpl  implements _WebAuthNEnrollmentSpec {\n    _builtin_original?: _WebAuthNEnrollmentSpec = undefined;\n    public user_id: string ;\n    public relying_party_id: string ;\n    public attestation_format: string  | undefined ;\n    public attestation_conveyance: WebAuthNEnrollmentSpec.AttestationConveyanceEnum  | undefined ;\n    public user_verification: WebAuthNEnrollmentSpec.UserVerificationEnum  | undefined ;\n    public http_endpoint: string  | undefined ;\n    constructor(base: _WebAuthNEnrollmentSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'user_id') >= 0) {\n            this.user_id = base.user_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'relying_party_id') >= 0) {\n            this.relying_party_id = base.relying_party_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'attestation_format') >= 0) {\n            this.attestation_format = base.attestation_format;\n        }\n        if (Object.keys(base).findIndex(key => key === 'attestation_conveyance') >= 0) {\n            this.attestation_conveyance = base.attestation_conveyance;\n        }\n        if (Object.keys(base).findIndex(key => key === 'user_verification') >= 0) {\n            this.user_verification = base.user_verification;\n        }\n        if (Object.keys(base).findIndex(key => key === 'http_endpoint') >= 0) {\n            this.http_endpoint = base.http_endpoint;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace WebAuthNEnrollmentSpec {\n    export type AttestationConveyanceEnum = 'direct' | 'indirect' | 'none';\n    export const AttestationConveyanceEnum = {\n        direct: 'direct' as AttestationConveyanceEnum,\n        indirect: 'indirect' as AttestationConveyanceEnum,\n        none: 'none' as AttestationConveyanceEnum\n    };\n    export type UserVerificationEnum = 'required' | 'preferred' | 'discouraged';\n    export const UserVerificationEnum = {\n        required: 'required' as UserVerificationEnum,\n        preferred: 'preferred' as UserVerificationEnum,\n        discouraged: 'discouraged' as UserVerificationEnum\n    };\n}\n\n\nexport function newWebAuthNEnrollmentSpecImpl(base: _WebAuthNEnrollmentSpec): WebAuthNEnrollmentSpecImpl {\n    return new WebAuthNEnrollmentSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * The status of the WebAuthN challenge enrollment.\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _WebAuthNEnrollmentStatus { \n    /**\n     * An opaque string used to challenge a user attempting to login using WebAuthN. The second factor device will return a signed version of this challenge to indicate that the user should be allowed to proceed. \n     */\n    challenge?: string;\n    /**\n     * A probabilistically-unique byte sequence identifying a public key credential source and its authentication assertions. See https://www.w3.org/TR/webauthn/#credential-id for more details \n     */\n    credential_id?: string;\n    /**\n     * List of supported transports for this enrolled credential\n     */\n    transports?: Array<WebAuthNEnrollmentStatus.TransportsEnum>;\n}\n\nexport interface WebAuthNEnrollmentStatus extends _WebAuthNEnrollmentStatus {\n    _builtin_original?: _WebAuthNEnrollmentStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class WebAuthNEnrollmentStatusImpl  implements _WebAuthNEnrollmentStatus {\n    _builtin_original?: _WebAuthNEnrollmentStatus = undefined;\n    public challenge: string  | undefined ;\n    public credential_id: string  | undefined ;\n    public transports: Array<WebAuthNEnrollmentStatus.TransportsEnum>  | undefined ;\n    constructor(base: _WebAuthNEnrollmentStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'challenge') >= 0) {\n            this.challenge = base.challenge;\n        }\n        if (Object.keys(base).findIndex(key => key === 'credential_id') >= 0) {\n            this.credential_id = base.credential_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'transports') >= 0) {\n            this.transports = base.transports;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace WebAuthNEnrollmentStatus {\n    export type TransportsEnum = 'internal' | 'ble' | 'nfc' | 'usb' | 'cable' | 'hybrid';\n    export const TransportsEnum = {\n        internal: 'internal' as TransportsEnum,\n        ble: 'ble' as TransportsEnum,\n        nfc: 'nfc' as TransportsEnum,\n        usb: 'usb' as TransportsEnum,\n        cable: 'cable' as TransportsEnum,\n        hybrid: 'hybrid' as TransportsEnum\n    };\n}\n\n\nexport function newWebAuthNEnrollmentStatusImpl(base: _WebAuthNEnrollmentStatus): WebAuthNEnrollmentStatusImpl {\n    return new WebAuthNEnrollmentStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Identification token required by Whoami when logging in\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _WhoamiRequest { \n    /**\n     * id_token\n     */\n    id_token: string;\n}\n\nexport interface WhoamiRequest extends _WhoamiRequest {\n    _builtin_original?: _WhoamiRequest;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class WhoamiRequestImpl  implements _WhoamiRequest {\n    _builtin_original?: _WhoamiRequest = undefined;\n    public id_token: string ;\n    constructor(base: _WhoamiRequest) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'id_token') >= 0) {\n            this.id_token = base.id_token;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newWhoamiRequestImpl(base: _WhoamiRequest): WhoamiRequestImpl {\n    return new WhoamiRequestImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _InheritableUserConfig, InheritableUserConfig, InheritableUserConfigImpl, newInheritableUserConfigImpl } from './inheritableUserConfig';\nimport { _User, User, UserImpl, newUserImpl } from './user';\nimport { _Organisation, Organisation, OrganisationImpl, newOrganisationImpl } from './organisation';\nimport { _UserAttribute, UserAttribute, UserAttributeImpl, newUserAttributeImpl } from './userAttribute';\nimport { _UserIdentity, UserIdentity, UserIdentityImpl, newUserIdentityImpl } from './userIdentity';\nimport { _UserInfo, UserInfo, UserInfoImpl, newUserInfoImpl } from './userInfo';\nimport { _UpstreamUserIdentity, UpstreamUserIdentity, UpstreamUserIdentityImpl, newUpstreamUserIdentityImpl } from './upstreamUserIdentity';\nimport { _UserAttributes, UserAttributes, UserAttributesImpl, newUserAttributesImpl } from './userAttributes';\nimport { _UserStatusEnum, UserStatusEnum, UserStatusEnumImpl, newUserStatusEnumImpl } from './userStatusEnum';\n\n\nimport { deepClone } from 'fast-json-patch'\nexport interface _WhoamiResponse extends _User { \n    /**\n     * access token\n     */\n    token?: string;\n    /**\n     * list of orgs user belongs to\n     */\n    readonly orgs?: Array<Organisation>;\n}\n\nexport interface WhoamiResponse extends _WhoamiResponse {\n    _builtin_original?: _WhoamiResponse;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class WhoamiResponseImpl  extends UserImpl implements _WhoamiResponse {\n    _builtin_original?: _WhoamiResponse = undefined;\n    public token: string  | undefined ;\n    public readonly orgs: Array<Organisation>  | undefined ;\n    constructor(base: _WhoamiResponse) {\n        // Deal with any inheritance by calling the parent class's Impl constructor to fill in its properties.\n        super(base);\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'token') >= 0) {\n            this.token = base.token;\n        }\n        if (Object.keys(base).findIndex(key => key === 'orgs') >= 0) {\n            if (base.orgs) {\n                this.orgs = base.orgs.map((original) => newOrganisationImpl(original));\n            } else {\n                this.orgs = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.orgs !== undefined) {\n            for (const item of this.orgs) {\n                if (item !== undefined && (item as OrganisationImpl)._remove_builtin_extensions !== undefined) {\n                    (item as OrganisationImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\nexport namespace WhoamiResponse {\n}\n\n\nexport function newWhoamiResponseImpl(base: _WhoamiResponse): WhoamiResponseImpl {\n    return new WhoamiResponseImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _EnvironmentConfigVar, EnvironmentConfigVar, EnvironmentConfigVarImpl, newEnvironmentConfigVarImpl } from './environmentConfigVar';\n\n\n/**\n * Configuration associated with Applications that have a workload (eg. container)\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _WorkloadConfiguration { \n    /**\n     * It stores an array of env_config_var objects(key & value pairs) in API. It provides environment variables to build configmaps and secrets directly. \n     */\n    env_config_vars?: Array<EnvironmentConfigVar>;\n}\n\nexport interface WorkloadConfiguration extends _WorkloadConfiguration {\n    _builtin_original?: _WorkloadConfiguration;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class WorkloadConfigurationImpl  implements _WorkloadConfiguration {\n    _builtin_original?: _WorkloadConfiguration = undefined;\n    public env_config_vars: Array<EnvironmentConfigVar>  | undefined ;\n    constructor(base: _WorkloadConfiguration) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'env_config_vars') >= 0) {\n            if (base.env_config_vars) {\n                this.env_config_vars = base.env_config_vars.map((original) => newEnvironmentConfigVarImpl(original));\n            } else {\n                this.env_config_vars = undefined;\n            }\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n        if (this.env_config_vars !== undefined) {\n            for (const item of this.env_config_vars) {\n                if (item !== undefined && (item as EnvironmentConfigVarImpl)._remove_builtin_extensions !== undefined) {\n                    (item as EnvironmentConfigVarImpl)._remove_builtin_extensions()\n                }\n            }\n        }\n    }\n}\n\nexport function newWorkloadConfigurationImpl(base: _WorkloadConfiguration): WorkloadConfigurationImpl {\n    return new WorkloadConfigurationImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\nimport { _CSRReasonEnum, CSRReasonEnum, CSRReasonEnumImpl, newCSRReasonEnumImpl } from './cSRReasonEnum';\n\n\n/**\n * A X509CertificateSpec\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _X509CertificateSpec { \n    /**\n     * The PEM certificate authority associated with this certificate.\n     */\n    ca?: string;\n    /**\n     * The issued x509 certificate, formatted as PEM.\n     */\n    certificate?: string;\n    /**\n     * A unique identifier used to identify the encryption key that was used for encryption of the priv_key, output of encrypted_priv_key. \n     */\n    encryption_key_id?: string;\n    /**\n     * The encrypted private key\n     */\n    encrypted_priv_key?: string;\n    /**\n     * The CertSigningReq id associated with this certificate\n     */\n    csr_id?: string;\n    /**\n     * Unique identifier\n     */\n    org_id: string;\n    /**\n     * A system message associated with the reason. \n     */\n    message?: string;\n    reason: CSRReasonEnum;\n    /**\n     * The CertificateTracker id associated with this certificate, if applicable. \n     */\n    certificate_tracker_id?: string;\n}\n\nexport interface X509CertificateSpec extends _X509CertificateSpec {\n    _builtin_original?: _X509CertificateSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class X509CertificateSpecImpl  implements _X509CertificateSpec {\n    _builtin_original?: _X509CertificateSpec = undefined;\n    public ca: string  | undefined ;\n    public certificate: string  | undefined ;\n    public encryption_key_id: string  | undefined ;\n    public encrypted_priv_key: string  | undefined ;\n    public csr_id: string  | undefined ;\n    public org_id: string ;\n    public message: string  | undefined ;\n    public reason: CSRReasonEnum ;\n    public certificate_tracker_id: string  | undefined ;\n    constructor(base: _X509CertificateSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'ca') >= 0) {\n            this.ca = base.ca;\n        }\n        if (Object.keys(base).findIndex(key => key === 'certificate') >= 0) {\n            this.certificate = base.certificate;\n        }\n        if (Object.keys(base).findIndex(key => key === 'encryption_key_id') >= 0) {\n            this.encryption_key_id = base.encryption_key_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'encrypted_priv_key') >= 0) {\n            this.encrypted_priv_key = base.encrypted_priv_key;\n        }\n        if (Object.keys(base).findIndex(key => key === 'csr_id') >= 0) {\n            this.csr_id = base.csr_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n        if (Object.keys(base).findIndex(key => key === 'message') >= 0) {\n            this.message = base.message;\n        }\n        if (Object.keys(base).findIndex(key => key === 'reason') >= 0) {\n            this.reason = base.reason;\n        }\n        if (Object.keys(base).findIndex(key => key === 'certificate_tracker_id') >= 0) {\n            this.certificate_tracker_id = base.certificate_tracker_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newX509CertificateSpecImpl(base: _X509CertificateSpec): X509CertificateSpecImpl {\n    return new X509CertificateSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A X509CertificateStatus\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _X509CertificateStatus { \n    /**\n     * date/time for which certificate is valid\n     */\n    readonly not_before?: Date;\n    /**\n     * date/time of certificate expiry\n     */\n    readonly not_after?: Date;\n    /**\n     * date/time of certificate renewal\n     */\n    readonly renewal_time?: Date;\n}\n\nexport interface X509CertificateStatus extends _X509CertificateStatus {\n    _builtin_original?: _X509CertificateStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class X509CertificateStatusImpl  implements _X509CertificateStatus {\n    _builtin_original?: _X509CertificateStatus = undefined;\n    public readonly not_before: Date  | undefined ;\n    public readonly not_after: Date  | undefined ;\n    public readonly renewal_time: Date  | undefined ;\n    constructor(base: _X509CertificateStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'not_before') >= 0) {\n            this.not_before = base.not_before;\n        }\n        if (Object.keys(base).findIndex(key => key === 'not_after') >= 0) {\n            this.not_after = base.not_after;\n        }\n        if (Object.keys(base).findIndex(key => key === 'renewal_time') >= 0) {\n            this.renewal_time = base.renewal_time;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newX509CertificateStatusImpl(base: _X509CertificateStatus): X509CertificateStatusImpl {\n    return new X509CertificateStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * A X509CertificateSpec\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _X509RootCertificateSpec { \n    /**\n     * The x509 certificate, formatted as PEM.\n     */\n    certificate: string;\n    /**\n     * The organisation to which the certificate is associated. Note that some certificates are issued by Agilicus globally, in which case this will be empty. \n     */\n    org_id?: string;\n}\n\nexport interface X509RootCertificateSpec extends _X509RootCertificateSpec {\n    _builtin_original?: _X509RootCertificateSpec;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class X509RootCertificateSpecImpl  implements _X509RootCertificateSpec {\n    _builtin_original?: _X509RootCertificateSpec = undefined;\n    public certificate: string ;\n    public org_id: string  | undefined ;\n    constructor(base: _X509RootCertificateSpec) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'certificate') >= 0) {\n            this.certificate = base.certificate;\n        }\n        if (Object.keys(base).findIndex(key => key === 'org_id') >= 0) {\n            this.org_id = base.org_id;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newX509RootCertificateSpecImpl(base: _X509RootCertificateSpec): X509RootCertificateSpecImpl {\n    return new X509RootCertificateSpecImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Derived information about the root certificate\n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _X509RootCertificateStatus { \n    /**\n     * The sha256 hash of the der encoding of the certificate in colon hex format. This can be used to easily build a local cache for example. \n     */\n    sha256_fingerprint: string;\n}\n\nexport interface X509RootCertificateStatus extends _X509RootCertificateStatus {\n    _builtin_original?: _X509RootCertificateStatus;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class X509RootCertificateStatusImpl  implements _X509RootCertificateStatus {\n    _builtin_original?: _X509RootCertificateStatus = undefined;\n    public sha256_fingerprint: string ;\n    constructor(base: _X509RootCertificateStatus) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'sha256_fingerprint') >= 0) {\n            this.sha256_fingerprint = base.sha256_fingerprint;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\n\nexport function newX509RootCertificateStatusImpl(base: _X509RootCertificateStatus): X509RootCertificateStatusImpl {\n    return new X509RootCertificateStatusImpl(base);\n}\n\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n\n\n/**\n * Controls the X-XSS-Protection header. Note: this may not be supported in all modern browsers, which have transitioned to Content Security Policy (CSP) as the mechanism to define cross site scripting behaviour. However, older browsers may not implement CSP to the required level, and may implement X-XSS-Protection. In that case, configuring this header will have no negative impact on modern browsers (which will ignore it), but can provide compatibility with older ones. \n */\nimport { deepClone } from 'fast-json-patch'\nexport interface _XSSSettings { \n    /**\n     * Whether or not to send the XSS-Protection-Header. If false, the system will not add the XSS-Protection-Header. Any headers added by the application will be passed through unchanged. \n     */\n    enabled: boolean;\n    /**\n     * Mode controls whether or not XSS filtering is enabled, and how it is. It has the following meanings:   - `disabled`: XSS Filtering is disabled.   - `sanitise`: XSS Filtering is enabled. Pages being attacked are sanitised.   - `block`: XSS Filtering is enabled, and attacked pages are not rendered. \n     */\n    mode: XSSSettings.ModeEnum;\n    /**\n     * Detected attacks are reported to this URI for supported browsers. Omitting this field or setting it to \\\"\\\" will lead to not reports being generated \n     */\n    report_uri?: string | null;\n}\n\nexport interface XSSSettings extends _XSSSettings {\n    _builtin_original?: _XSSSettings;\n\n    // In-place modifies the object to remove any builtin extensions which\n    // make it differ from the API model definition.\n    _remove_builtin_extensions?: () => void;\n}\n\nexport class XSSSettingsImpl  implements _XSSSettings {\n    _builtin_original?: _XSSSettings = undefined;\n    public enabled: boolean ;\n    public mode: XSSSettings.ModeEnum ;\n    public report_uri: string | null  | undefined ;\n    constructor(base: _XSSSettings) {\n\n        this._builtin_original = deepClone(base);\n\n        // Ensure we don't add anything to the tracking logic which isn't in the baseline. This is necessary\n        // to prevent the patch from thinking that we explicitly set said variables to undefined -- i.e.\n        // it is necessary to make the baseline line up with the working variables. While this isn't the\n        // most efficient O(n^2), it's probably okay. We can also look into more efficient mechanisms\n        // in the future.\n        if (Object.keys(base).findIndex(key => key === 'enabled') >= 0) {\n            this.enabled = base.enabled;\n        }\n        if (Object.keys(base).findIndex(key => key === 'mode') >= 0) {\n            this.mode = base.mode;\n        }\n        if (Object.keys(base).findIndex(key => key === 'report_uri') >= 0) {\n            this.report_uri = base.report_uri;\n        }\n\n        // Copy anything we have in the baseline but isn't in the api model locally. This ensures compatibility with how\n        // the old api generation worked.\n        Object.keys(base).forEach((key) => {\n            if ((this as any)[key] === undefined) {\n                // Note that if the value is undefined *and* in the model, we'll just set it to undefined here as well.\n                (this as any)[key] = (base as any)[key];\n            }\n        })\n    }\n\n    public _remove_builtin_extensions(): void {\n        delete this._builtin_original;\n    }\n}\nexport namespace XSSSettings {\n    export type ModeEnum = 'disabled' | 'block' | 'sanitise';\n    export const ModeEnum = {\n        disabled: 'disabled' as ModeEnum,\n        block: 'block' as ModeEnum,\n        sanitise: 'sanitise' as ModeEnum\n    };\n}\n\n\nexport function newXSSSettingsImpl(base: _XSSSettings): XSSSettingsImpl {\n    return new XSSSettingsImpl(base);\n}\n\n","import { InjectionToken } from '@angular/core';\n\nexport const BASE_PATH = new InjectionToken<string>('basePath');\nexport const COLLECTION_FORMATS = {\n    'csv': ',',\n    'tsv': '   ',\n    'ssv': ' ',\n    'pipes': '|'\n}\n","import { HttpParameterCodec } from '@angular/common/http';\n\nexport interface ConfigurationParameters {\n    /**\n     *  @deprecated Since 5.0. Use credentials instead\n     */\n    apiKeys?: {[ key: string ]: string};\n    username?: string;\n    password?: string;\n    /**\n     *  @deprecated Since 5.0. Use credentials instead\n     */\n    accessToken?: string | (() => string|undefined) | (() => Promise<string|undefined>);\n    basePath?: string;\n    withCredentials?: boolean;\n    encoder?: HttpParameterCodec;\n    /**\n     * The keys are the names in the securitySchemes section of the OpenAPI\n     * document. They should map to the value used for authentication\n     * minus any standard prefixes such as 'Basic' or 'Bearer'.\n     */\n    credentials?: {[ key: string ]:  string | (() => string|undefined) | (() => Promise<string|undefined>)};\n}\n\nexport class Configuration {\n    /**\n     *  @deprecated Since 5.0. Use credentials instead\n     */\n    apiKeys?: {[ key: string ]: string};\n    username?: string;\n    password?: string;\n    /**\n     *  @deprecated Since 5.0. Use credentials instead\n     */\n    accessToken?: string | (() => string|undefined) | (() => Promise<string|undefined>);\n    basePath?: string;\n    withCredentials?: boolean;\n    encoder?: HttpParameterCodec;\n    /**\n     * The keys are the names in the securitySchemes section of the OpenAPI\n     * document. They should map to the value used for authentication\n     * minus any standard prefixes such as 'Basic' or 'Bearer'.\n     */\n    credentials: {[ key: string ]: string | (() => string|undefined) | (() => Promise<string|undefined>)};\n\n    constructor(configurationParameters: ConfigurationParameters = {}) {\n        this.apiKeys = configurationParameters.apiKeys;\n        this.username = configurationParameters.username;\n        this.password = configurationParameters.password;\n        this.accessToken = configurationParameters.accessToken;\n        this.basePath = configurationParameters.basePath;\n        this.withCredentials = configurationParameters.withCredentials;\n        this.encoder = configurationParameters.encoder;\n        if (configurationParameters.credentials) {\n            this.credentials = configurationParameters.credentials;\n        }\n        else {\n            this.credentials = {};\n        }\n\n        // init default token-valid credential\n        if (!this.credentials['token-valid']) {\n            this.credentials['token-valid'] = this.accessToken\n        }\n    }\n\n    /**\n     * Select the correct content-type to use for a request.\n     * Uses {@link Configuration#isJsonMime} to determine the correct content-type.\n     * If no content type is found return the first found type if the contentTypes is not empty\n     * @param contentTypes - the array of content types that are available for selection\n     * @returns the selected content-type or <code>undefined</code> if no selection could be made.\n     */\n    public selectHeaderContentType (contentTypes: string[]): string | undefined {\n        if (contentTypes.length === 0) {\n            return undefined;\n        }\n\n        const type = contentTypes.find((x: string) => this.isJsonMime(x));\n        if (type === undefined) {\n            return contentTypes[0];\n        }\n        return type;\n    }\n\n    /**\n     * Select the correct accept content-type to use for a request.\n     * Uses {@link Configuration#isJsonMime} to determine the correct accept content-type.\n     * If no content type is found return the first found type if the contentTypes is not empty\n     * @param accepts - the array of content types that are available for selection.\n     * @returns the selected content-type or <code>undefined</code> if no selection could be made.\n     */\n    public selectHeaderAccept(accepts: string[]): string | undefined {\n        if (accepts.length === 0) {\n            return undefined;\n        }\n\n        const type = accepts.find((x: string) => this.isJsonMime(x));\n        if (type === undefined) {\n            return accepts[0];\n        }\n        return type;\n    }\n\n    /**\n     * Check if the given MIME is a JSON MIME.\n     * JSON MIME examples:\n     *   application/json\n     *   application/json; charset=UTF8\n     *   APPLICATION/JSON\n     *   application/vnd.company+json\n     * @param mime - MIME (Multipurpose Internet Mail Extensions)\n     * @return True if the given MIME is JSON, false otherwise.\n     */\n    public isJsonMime(mime: string): boolean {\n        const jsonMime: RegExp = new RegExp('^(application\\/json|[^;/ \\t]+\\/[^;/ \\t]+[+]json)[ \\t]*(;.*)?$', 'i');\n        return mime !== null && (jsonMime.test(mime) || mime.toLowerCase() === 'application/json-patch+json');\n    }\n\n    public async lookupCredential(key: string): Promise<string | undefined> {\n        const value = this.credentials[key];\n       if (typeof value !== 'function') {\n            return value\n       }\n\n       if (value.constructor.name === \"AsyncFunction\") {\n         return await value()\n       }\n\n       return value()\n    }\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _ApplicationService, ApplicationService, ApplicationServiceImpl } from '../model/models';\nimport { _ApplicationServiceCommonStats, ApplicationServiceCommonStats, ApplicationServiceCommonStatsImpl } from '../model/models';\nimport { _DatabaseResource, DatabaseResource, DatabaseResourceImpl } from '../model/models';\nimport { _DesktopClientConfiguration, DesktopClientConfiguration, DesktopClientConfigurationImpl } from '../model/models';\nimport { _DesktopResource, DesktopResource, DesktopResourceImpl } from '../model/models';\nimport { _DesktopServerConfiguration, DesktopServerConfiguration, DesktopServerConfigurationImpl } from '../model/models';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _FileShareService, FileShareService, FileShareServiceImpl } from '../model/models';\nimport { _ListApplicationServicesResponse, ListApplicationServicesResponse, ListApplicationServicesResponseImpl } from '../model/models';\nimport { _ListDatabaseResourcesResponse, ListDatabaseResourcesResponse, ListDatabaseResourcesResponseImpl } from '../model/models';\nimport { _ListDesktopResourcesResponse, ListDesktopResourcesResponse, ListDesktopResourcesResponseImpl } from '../model/models';\nimport { _ListFileShareServicesResponse, ListFileShareServicesResponse, ListFileShareServicesResponseImpl } from '../model/models';\nimport { _ListSSHResourcesResponse, ListSSHResourcesResponse, ListSSHResourcesResponseImpl } from '../model/models';\nimport { _ListServiceForwardersResponse, ListServiceForwardersResponse, ListServiceForwardersResponseImpl } from '../model/models';\nimport { _RawToken, RawToken, RawTokenImpl } from '../model/models';\nimport { _SSHResource, SSHResource, SSHResourceImpl } from '../model/models';\nimport { _ServiceForwarder, ServiceForwarder, ServiceForwarderImpl } from '../model/models';\nimport { _UsageMetric, UsageMetric, UsageMetricImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    ApplicationServicesServiceInterface,\n    CreateApplicationServiceRequestParams,\n    CreateApplicationServiceTokenRequestParams,\n    CreateClientConfigurationRequestParams,\n    CreateDatabaseResourceRequestParams,\n    CreateDesktopResourceRequestParams,\n    CreateFileShareServiceRequestParams,\n    CreateServerConfigurationRequestParams,\n    CreateServiceForwarderRequestParams,\n    CreateSshResourceRequestParams,\n    DeleteApplicationServiceRequestParams,\n    DeleteDatabaseResourceRequestParams,\n    DeleteDesktopResourceRequestParams,\n    DeleteFileShareServiceRequestParams,\n    DeleteServiceForwarderRequestParams,\n    DeleteSshResourceRequestParams,\n    GetApplicationServiceRequestParams,\n    GetApplicationServiceStatsRequestParams,\n    GetApplicationServiceUsageMetricsRequestParams,\n    GetDatabaseResourceRequestParams,\n    GetDesktopResourceRequestParams,\n    GetFileShareServiceRequestParams,\n    GetFileShareUsageMetricsRequestParams,\n    GetServiceForwarderRequestParams,\n    GetSshResourceRequestParams,\n    ListApplicationServicesRequestParams,\n    ListDatabaseResourcesRequestParams,\n    ListDesktopResourcesRequestParams,\n    ListFileShareServicesRequestParams,\n    ListServiceForwardersRequestParams,\n    ListSshResourcesRequestParams,\n    ReplaceApplicationServiceRequestParams,\n    ReplaceDatabaseResourceRequestParams,\n    ReplaceDesktopResourceRequestParams,\n    ReplaceFileShareServiceRequestParams,\n    ReplaceServiceForwarderRequestParams,\n    ReplaceSshResourceRequestParams\n} from './applicationServices.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApplicationServicesService implements ApplicationServicesServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Create an ApplicationService\n     * It is expected that owners for an organisation will provide connectivity to an ApplicationService by defining one here, then adding a reference to an Application\\&#39;s Environment in the ApplicationService\\&#39;s &#x60;assignments&#x60; list. To see the list of ApplicationServices for which a given Application Environment has access, see that Environment\\&#39;s read only &#x60;applications_services&#x60; list. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createApplicationService(requestParameters: CreateApplicationServiceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ApplicationService>;\n    public createApplicationService(requestParameters: CreateApplicationServiceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ApplicationService>>;\n    public createApplicationService(requestParameters: CreateApplicationServiceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ApplicationService>>;\n    public createApplicationService(requestParameters: CreateApplicationServiceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const ApplicationService = requestParameters.ApplicationService;\n        if (ApplicationService === null || ApplicationService === undefined) {\n            throw new Error('Required parameter ApplicationService was null or undefined when calling createApplicationService.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_ApplicationService>(`${this.configuration.basePath}/v2/application_services`,\n                    ApplicationService,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ApplicationService) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ApplicationServiceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * create a token for an application service\n     * Create a token for an application service\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createApplicationServiceToken(requestParameters: CreateApplicationServiceTokenRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<RawToken>;\n    public createApplicationServiceToken(requestParameters: CreateApplicationServiceTokenRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<RawToken>>;\n    public createApplicationServiceToken(requestParameters: CreateApplicationServiceTokenRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<RawToken>>;\n    public createApplicationServiceToken(requestParameters: CreateApplicationServiceTokenRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_service_id = requestParameters.app_service_id;\n        if (app_service_id === null || app_service_id === undefined) {\n            throw new Error('Required parameter app_service_id was null or undefined when calling createApplicationServiceToken.');\n        }\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling createApplicationServiceToken.');\n        }\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_RawToken>(`${this.configuration.basePath}/v2/application_services/${encodeURIComponent(String(app_service_id))}/token`,\n                    null,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _RawToken) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RawTokenImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a client configuration\n     * Create a client configuration file. This file may be downloaded and used by the appropriate client to connect to the DesktopResource. If you provide the id of user who wants to connect, the file will contain credentials which may be used to prove their authorization to access the DesktopResource. The DesktopClientConfiguration is not stored in the system. Subsequent calls to create a new DesktopClientConfiguration will lead to a new one being generated. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createClientConfiguration(requestParameters: CreateClientConfigurationRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<DesktopClientConfiguration>;\n    public createClientConfiguration(requestParameters: CreateClientConfigurationRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<DesktopClientConfiguration>>;\n    public createClientConfiguration(requestParameters: CreateClientConfigurationRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<DesktopClientConfiguration>>;\n    public createClientConfiguration(requestParameters: CreateClientConfigurationRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_id = requestParameters.resource_id;\n        if (resource_id === null || resource_id === undefined) {\n            throw new Error('Required parameter resource_id was null or undefined when calling createClientConfiguration.');\n        }\n        const DesktopClientConfiguration = requestParameters.DesktopClientConfiguration;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_DesktopClientConfiguration>(`${this.configuration.basePath}/v1/desktop_resources/${encodeURIComponent(String(resource_id))}/client_configurations`,\n                    DesktopClientConfiguration,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _DesktopClientConfiguration) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new DesktopClientConfigurationImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a DatabaseResource\n     * Administrators can allow remote connectivity to a database using a DatabaseResource. Make sure to expose the DatabaseResource through a connector by setting the &#x60;connector_id&#x60;. You can create multiple DatabaseResource objects for a given database, with different settings.  The name of the DatabaseResource uniquely identifies it. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createDatabaseResource(requestParameters: CreateDatabaseResourceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<DatabaseResource>;\n    public createDatabaseResource(requestParameters: CreateDatabaseResourceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<DatabaseResource>>;\n    public createDatabaseResource(requestParameters: CreateDatabaseResourceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<DatabaseResource>>;\n    public createDatabaseResource(requestParameters: CreateDatabaseResourceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const DatabaseResource = requestParameters.DatabaseResource;\n        if (DatabaseResource === null || DatabaseResource === undefined) {\n            throw new Error('Required parameter DatabaseResource was null or undefined when calling createDatabaseResource.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_DatabaseResource>(`${this.configuration.basePath}/v1/database_resources`,\n                    DatabaseResource,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _DatabaseResource) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new DatabaseResourceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a DesktopResource\n     * Administrators for an organisation can allow remote connectivity to a desktop by creating a DesktopResource using this endpoint. Make sure to expose the DesktopResource through a connector by setting the &#x60;connector_id&#x60;. You can create multiple DesktopResource objects. for a given desktop. The name of the DesktopResource uniquely identifies it. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createDesktopResource(requestParameters: CreateDesktopResourceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<DesktopResource>;\n    public createDesktopResource(requestParameters: CreateDesktopResourceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<DesktopResource>>;\n    public createDesktopResource(requestParameters: CreateDesktopResourceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<DesktopResource>>;\n    public createDesktopResource(requestParameters: CreateDesktopResourceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const DesktopResource = requestParameters.DesktopResource;\n        if (DesktopResource === null || DesktopResource === undefined) {\n            throw new Error('Required parameter DesktopResource was null or undefined when calling createDesktopResource.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_DesktopResource>(`${this.configuration.basePath}/v1/desktop_resources`,\n                    DesktopResource,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _DesktopResource) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new DesktopResourceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create an FileShareService\n     * It is expected that owners for an organisation will provide connectivity to an FileShareService by defining one here, then adding a reference to an Application\\&#39;s Environment in the FileShareService\\&#39;s &#x60;assignments&#x60; list. To see the list of FileShareServices for which a given Application Environment has access, see that Environment\\&#39;s read only &#x60;applications_services&#x60; list. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createFileShareService(requestParameters: CreateFileShareServiceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<FileShareService>;\n    public createFileShareService(requestParameters: CreateFileShareServiceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<FileShareService>>;\n    public createFileShareService(requestParameters: CreateFileShareServiceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<FileShareService>>;\n    public createFileShareService(requestParameters: CreateFileShareServiceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const FileShareService = requestParameters.FileShareService;\n        if (FileShareService === null || FileShareService === undefined) {\n            throw new Error('Required parameter FileShareService was null or undefined when calling createFileShareService.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_FileShareService>(`${this.configuration.basePath}/v1/file_share_services`,\n                    FileShareService,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _FileShareService) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new FileShareServiceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a server configuration\n     * Create a server configuration file. This file may be downloaded and used by the appropriate server to configures itself to expose the DesktopResource. The file is returned immediately in the response. It is not persisted. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createServerConfiguration(requestParameters: CreateServerConfigurationRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<DesktopServerConfiguration>;\n    public createServerConfiguration(requestParameters: CreateServerConfigurationRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<DesktopServerConfiguration>>;\n    public createServerConfiguration(requestParameters: CreateServerConfigurationRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<DesktopServerConfiguration>>;\n    public createServerConfiguration(requestParameters: CreateServerConfigurationRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_id = requestParameters.resource_id;\n        if (resource_id === null || resource_id === undefined) {\n            throw new Error('Required parameter resource_id was null or undefined when calling createServerConfiguration.');\n        }\n        const DesktopServerConfiguration = requestParameters.DesktopServerConfiguration;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_DesktopServerConfiguration>(`${this.configuration.basePath}/v1/desktop_resources/${encodeURIComponent(String(resource_id))}/server_configurations`,\n                    DesktopServerConfiguration,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _DesktopServerConfiguration) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new DesktopServerConfigurationImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create an ServiceForwarder\n     * Create an ServiceForwarder\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createServiceForwarder(requestParameters: CreateServiceForwarderRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ServiceForwarder>;\n    public createServiceForwarder(requestParameters: CreateServiceForwarderRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ServiceForwarder>>;\n    public createServiceForwarder(requestParameters: CreateServiceForwarderRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ServiceForwarder>>;\n    public createServiceForwarder(requestParameters: CreateServiceForwarderRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const ServiceForwarder = requestParameters.ServiceForwarder;\n        if (ServiceForwarder === null || ServiceForwarder === undefined) {\n            throw new Error('Required parameter ServiceForwarder was null or undefined when calling createServiceForwarder.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_ServiceForwarder>(`${this.configuration.basePath}/v1/service_forwarders`,\n                    ServiceForwarder,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ServiceForwarder) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ServiceForwarderImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a SSHResource\n     * Administrators can allow remote connectivity to a machine via the SSH protocol by creating a SSHResource using this endpoint. Make sure to expose the SSHResource through a connector by setting the &#x60;connector_id&#x60;. You can create multiple SSHResource objects. for a given machine. The name of the SSHResource uniquely identifies it. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createSshResource(requestParameters: CreateSshResourceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<SSHResource>;\n    public createSshResource(requestParameters: CreateSshResourceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<SSHResource>>;\n    public createSshResource(requestParameters: CreateSshResourceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<SSHResource>>;\n    public createSshResource(requestParameters: CreateSshResourceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const SSHResource = requestParameters.SSHResource;\n        if (SSHResource === null || SSHResource === undefined) {\n            throw new Error('Required parameter SSHResource was null or undefined when calling createSshResource.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_SSHResource>(`${this.configuration.basePath}/v1/ssh_resources`,\n                    SSHResource,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _SSHResource) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new SSHResourceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Remove an ApplicationService\n     * Remove an ApplicationService\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteApplicationService(requestParameters: DeleteApplicationServiceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteApplicationService(requestParameters: DeleteApplicationServiceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteApplicationService(requestParameters: DeleteApplicationServiceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteApplicationService(requestParameters: DeleteApplicationServiceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const app_service_id = requestParameters.app_service_id;\n        if (app_service_id === null || app_service_id === undefined) {\n            throw new Error('Required parameter app_service_id was null or undefined when calling deleteApplicationService.');\n        }\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling deleteApplicationService.');\n        }\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v2/application_services/${encodeURIComponent(String(app_service_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Remove a DatabaseResource\n     * Remove a DatabaseResource. After removal, users will no longer be able to access the DatabaseResource. Existing connections to the DatabaseResource may persist for some time afterwards. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteDatabaseResource(requestParameters: DeleteDatabaseResourceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteDatabaseResource(requestParameters: DeleteDatabaseResourceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteDatabaseResource(requestParameters: DeleteDatabaseResourceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteDatabaseResource(requestParameters: DeleteDatabaseResourceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_id = requestParameters.resource_id;\n        if (resource_id === null || resource_id === undefined) {\n            throw new Error('Required parameter resource_id was null or undefined when calling deleteDatabaseResource.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/database_resources/${encodeURIComponent(String(resource_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Remove a DesktopResource\n     * Remove a DesktopResource. After removal, users will no longer be able to access the DesktopResource. Existing connections to the DesktopResource may persist for some time afterwards. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteDesktopResource(requestParameters: DeleteDesktopResourceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteDesktopResource(requestParameters: DeleteDesktopResourceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteDesktopResource(requestParameters: DeleteDesktopResourceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteDesktopResource(requestParameters: DeleteDesktopResourceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_id = requestParameters.resource_id;\n        if (resource_id === null || resource_id === undefined) {\n            throw new Error('Required parameter resource_id was null or undefined when calling deleteDesktopResource.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/desktop_resources/${encodeURIComponent(String(resource_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Remove an FileShareService\n     * Remove an FileShareService\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteFileShareService(requestParameters: DeleteFileShareServiceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteFileShareService(requestParameters: DeleteFileShareServiceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteFileShareService(requestParameters: DeleteFileShareServiceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteFileShareService(requestParameters: DeleteFileShareServiceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const file_share_service_id = requestParameters.file_share_service_id;\n        if (file_share_service_id === null || file_share_service_id === undefined) {\n            throw new Error('Required parameter file_share_service_id was null or undefined when calling deleteFileShareService.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/file_share_services/${encodeURIComponent(String(file_share_service_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Remove an ServiceForwarder\n     * Remove an ServiceForwarder\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteServiceForwarder(requestParameters: DeleteServiceForwarderRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteServiceForwarder(requestParameters: DeleteServiceForwarderRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteServiceForwarder(requestParameters: DeleteServiceForwarderRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteServiceForwarder(requestParameters: DeleteServiceForwarderRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const service_forwarder_id = requestParameters.service_forwarder_id;\n        if (service_forwarder_id === null || service_forwarder_id === undefined) {\n            throw new Error('Required parameter service_forwarder_id was null or undefined when calling deleteServiceForwarder.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/service_forwarders/${encodeURIComponent(String(service_forwarder_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Remove a SSHResource\n     * Remove a SSHResource. After removal, users will no longer be able to access the SSHResource. Existing connections to the SSHResource may persist for some time afterwards. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteSshResource(requestParameters: DeleteSshResourceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteSshResource(requestParameters: DeleteSshResourceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteSshResource(requestParameters: DeleteSshResourceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteSshResource(requestParameters: DeleteSshResourceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_id = requestParameters.resource_id;\n        if (resource_id === null || resource_id === undefined) {\n            throw new Error('Required parameter resource_id was null or undefined when calling deleteSshResource.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/ssh_resources/${encodeURIComponent(String(resource_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get a single ApplicationService\n     * Get a single ApplicationService\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getApplicationService(requestParameters: GetApplicationServiceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ApplicationService>;\n    public getApplicationService(requestParameters: GetApplicationServiceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ApplicationService>>;\n    public getApplicationService(requestParameters: GetApplicationServiceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ApplicationService>>;\n    public getApplicationService(requestParameters: GetApplicationServiceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_service_id = requestParameters.app_service_id;\n        if (app_service_id === null || app_service_id === undefined) {\n            throw new Error('Required parameter app_service_id was null or undefined when calling getApplicationService.');\n        }\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling getApplicationService.');\n        }\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ApplicationService>(`${this.configuration.basePath}/v2/application_services/${encodeURIComponent(String(app_service_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ApplicationService) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ApplicationServiceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get ApplicationServiceStats\n     * Gets the most recent stats published for an ApplicationService, aggregated across connector intsances. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getApplicationServiceStats(requestParameters: GetApplicationServiceStatsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ApplicationServiceCommonStats>;\n    public getApplicationServiceStats(requestParameters: GetApplicationServiceStatsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ApplicationServiceCommonStats>>;\n    public getApplicationServiceStats(requestParameters: GetApplicationServiceStatsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ApplicationServiceCommonStats>>;\n    public getApplicationServiceStats(requestParameters: GetApplicationServiceStatsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_service_id = requestParameters.app_service_id;\n        if (app_service_id === null || app_service_id === undefined) {\n            throw new Error('Required parameter app_service_id was null or undefined when calling getApplicationServiceStats.');\n        }\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling getApplicationServiceStats.');\n        }\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ApplicationServiceCommonStats>(`${this.configuration.basePath}/v2/application_services/${encodeURIComponent(String(app_service_id))}/stats`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ApplicationServiceCommonStats) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ApplicationServiceCommonStatsImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get application service metrics\n     * Retrieves all application service metrics related to the org_id. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getApplicationServiceUsageMetrics(requestParameters: GetApplicationServiceUsageMetricsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UsageMetric>;\n    public getApplicationServiceUsageMetrics(requestParameters: GetApplicationServiceUsageMetricsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UsageMetric>>;\n    public getApplicationServiceUsageMetrics(requestParameters: GetApplicationServiceUsageMetricsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UsageMetric>>;\n    public getApplicationServiceUsageMetrics(requestParameters: GetApplicationServiceUsageMetricsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling getApplicationServiceUsageMetrics.');\n        }\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_UsageMetric>(`${this.configuration.basePath}/v2/application_services/usage_metrics`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UsageMetric) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UsageMetricImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a single DatabaseResource\n     * Get the details of a single DatabaseResource. Specify the id of the organisation which owns this resource to ensure you have permission. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getDatabaseResource(requestParameters: GetDatabaseResourceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<DatabaseResource>;\n    public getDatabaseResource(requestParameters: GetDatabaseResourceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<DatabaseResource>>;\n    public getDatabaseResource(requestParameters: GetDatabaseResourceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<DatabaseResource>>;\n    public getDatabaseResource(requestParameters: GetDatabaseResourceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_id = requestParameters.resource_id;\n        if (resource_id === null || resource_id === undefined) {\n            throw new Error('Required parameter resource_id was null or undefined when calling getDatabaseResource.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_DatabaseResource>(`${this.configuration.basePath}/v1/database_resources/${encodeURIComponent(String(resource_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _DatabaseResource) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new DatabaseResourceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a single DesktopResource\n     * Get the details of a single DesktopResource. Specify the id of the organisation which owns this resource to ensure you have permission. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getDesktopResource(requestParameters: GetDesktopResourceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<DesktopResource>;\n    public getDesktopResource(requestParameters: GetDesktopResourceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<DesktopResource>>;\n    public getDesktopResource(requestParameters: GetDesktopResourceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<DesktopResource>>;\n    public getDesktopResource(requestParameters: GetDesktopResourceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_id = requestParameters.resource_id;\n        if (resource_id === null || resource_id === undefined) {\n            throw new Error('Required parameter resource_id was null or undefined when calling getDesktopResource.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_DesktopResource>(`${this.configuration.basePath}/v1/desktop_resources/${encodeURIComponent(String(resource_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _DesktopResource) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new DesktopResourceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a single FileShareService\n     * Get a single FileShareService\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getFileShareService(requestParameters: GetFileShareServiceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<FileShareService>;\n    public getFileShareService(requestParameters: GetFileShareServiceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<FileShareService>>;\n    public getFileShareService(requestParameters: GetFileShareServiceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<FileShareService>>;\n    public getFileShareService(requestParameters: GetFileShareServiceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const file_share_service_id = requestParameters.file_share_service_id;\n        if (file_share_service_id === null || file_share_service_id === undefined) {\n            throw new Error('Required parameter file_share_service_id was null or undefined when calling getFileShareService.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_FileShareService>(`${this.configuration.basePath}/v1/file_share_services/${encodeURIComponent(String(file_share_service_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _FileShareService) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new FileShareServiceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get file share service metrics\n     * Retrieves all file share service metrics related to the org_id. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getFileShareUsageMetrics(requestParameters: GetFileShareUsageMetricsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UsageMetric>;\n    public getFileShareUsageMetrics(requestParameters: GetFileShareUsageMetricsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UsageMetric>>;\n    public getFileShareUsageMetrics(requestParameters: GetFileShareUsageMetricsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UsageMetric>>;\n    public getFileShareUsageMetrics(requestParameters: GetFileShareUsageMetricsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling getFileShareUsageMetrics.');\n        }\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_UsageMetric>(`${this.configuration.basePath}/v1/file_share_services/usage_metrics`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UsageMetric) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UsageMetricImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a single ServiceForwarder\n     * Get a single ServiceForwarder\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getServiceForwarder(requestParameters: GetServiceForwarderRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ServiceForwarder>;\n    public getServiceForwarder(requestParameters: GetServiceForwarderRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ServiceForwarder>>;\n    public getServiceForwarder(requestParameters: GetServiceForwarderRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ServiceForwarder>>;\n    public getServiceForwarder(requestParameters: GetServiceForwarderRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const service_forwarder_id = requestParameters.service_forwarder_id;\n        if (service_forwarder_id === null || service_forwarder_id === undefined) {\n            throw new Error('Required parameter service_forwarder_id was null or undefined when calling getServiceForwarder.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ServiceForwarder>(`${this.configuration.basePath}/v1/service_forwarders/${encodeURIComponent(String(service_forwarder_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ServiceForwarder) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ServiceForwarderImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a single SSHResource\n     * Get the details of a single SSHResource. Specify the id of the organisation which owns this resource to ensure you have permission. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getSshResource(requestParameters: GetSshResourceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<SSHResource>;\n    public getSshResource(requestParameters: GetSshResourceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<SSHResource>>;\n    public getSshResource(requestParameters: GetSshResourceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<SSHResource>>;\n    public getSshResource(requestParameters: GetSshResourceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_id = requestParameters.resource_id;\n        if (resource_id === null || resource_id === undefined) {\n            throw new Error('Required parameter resource_id was null or undefined when calling getSshResource.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_SSHResource>(`${this.configuration.basePath}/v1/ssh_resources/${encodeURIComponent(String(resource_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _SSHResource) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new SSHResourceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a subset of the ApplicationServices\n     * Retrieves all ApplicationServices owned by the Organisation.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listApplicationServices(requestParameters: ListApplicationServicesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListApplicationServicesResponse>;\n    public listApplicationServices(requestParameters: ListApplicationServicesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListApplicationServicesResponse>>;\n    public listApplicationServices(requestParameters: ListApplicationServicesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListApplicationServicesResponse>>;\n    public listApplicationServices(requestParameters: ListApplicationServicesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const updated_since = requestParameters.updated_since;\n        const protocol_type = requestParameters.protocol_type;\n        const protocol_type_list = requestParameters.protocol_type_list;\n        const name = requestParameters.name;\n        const hostname = requestParameters.hostname;\n        const hostname_or_service_name = requestParameters.hostname_or_service_name;\n        const port = requestParameters.port;\n        const show_status = requestParameters.show_status;\n        const external_hostname_or_service = requestParameters.external_hostname_or_service;\n        const show_connector_services = requestParameters.show_connector_services;\n        const limit = requestParameters.limit;\n        const page_on = requestParameters.page_on;\n        const page_at_key = requestParameters.page_at_key;\n        const page_sort = requestParameters.page_sort;\n        const search_direction = requestParameters.search_direction;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (updated_since !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>updated_since, 'updated_since');\n        }\n        if (protocol_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>protocol_type, 'protocol_type');\n        }\n        if (protocol_type_list) {\n            protocol_type_list.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'protocol_type_list');\n            })\n        }\n        if (name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name, 'name');\n        }\n        if (hostname !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>hostname, 'hostname');\n        }\n        if (hostname_or_service_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>hostname_or_service_name, 'hostname_or_service_name');\n        }\n        if (port !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>port, 'port');\n        }\n        if (show_status !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>show_status, 'show_status');\n        }\n        if (external_hostname_or_service !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>external_hostname_or_service, 'external_hostname_or_service');\n        }\n        if (show_connector_services !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>show_connector_services, 'show_connector_services');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (page_on) {\n            page_on.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_on');\n            })\n        }\n        if (page_at_key) {\n            page_at_key.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_at_key');\n            })\n        }\n        if (page_sort) {\n            page_sort.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_sort');\n            })\n        }\n        if (search_direction !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>search_direction, 'search_direction');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListApplicationServicesResponse>(`${this.configuration.basePath}/v2/application_services`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListApplicationServicesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListApplicationServicesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a subset of the DatabaseResource objects.\n     * Retrieves DatabaseResource objects owned by the Organisation.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listDatabaseResources(requestParameters: ListDatabaseResourcesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListDatabaseResourcesResponse>;\n    public listDatabaseResources(requestParameters: ListDatabaseResourcesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListDatabaseResourcesResponse>>;\n    public listDatabaseResources(requestParameters: ListDatabaseResourcesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListDatabaseResourcesResponse>>;\n    public listDatabaseResources(requestParameters: ListDatabaseResourcesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const name = requestParameters.name;\n        const connector_id = requestParameters.connector_id;\n        const updated_since = requestParameters.updated_since;\n        const limit = requestParameters.limit;\n        const org_ids = requestParameters.org_ids;\n        const resource_id = requestParameters.resource_id;\n        const page_at_id = requestParameters.page_at_id;\n        const name_slug = requestParameters.name_slug;\n        const page_on = requestParameters.page_on;\n        const page_at_key = requestParameters.page_at_key;\n        const page_sort = requestParameters.page_sort;\n        const search_direction = requestParameters.search_direction;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name, 'name');\n        }\n        if (connector_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>connector_id, 'connector_id');\n        }\n        if (updated_since !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>updated_since, 'updated_since');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_ids) {\n            org_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'org_ids');\n            })\n        }\n        if (resource_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_id, 'resource_id');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (name_slug !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name_slug, 'name_slug');\n        }\n        if (page_on) {\n            page_on.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_on');\n            })\n        }\n        if (page_at_key) {\n            page_at_key.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_at_key');\n            })\n        }\n        if (page_sort) {\n            page_sort.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_sort');\n            })\n        }\n        if (search_direction !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>search_direction, 'search_direction');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListDatabaseResourcesResponse>(`${this.configuration.basePath}/v1/database_resources`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListDatabaseResourcesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListDatabaseResourcesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a subset of the DesktopResource objects.\n     * Retrieves DesktopResource objects owned by the Organisation.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listDesktopResources(requestParameters: ListDesktopResourcesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListDesktopResourcesResponse>;\n    public listDesktopResources(requestParameters: ListDesktopResourcesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListDesktopResourcesResponse>>;\n    public listDesktopResources(requestParameters: ListDesktopResourcesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListDesktopResourcesResponse>>;\n    public listDesktopResources(requestParameters: ListDesktopResourcesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const name = requestParameters.name;\n        const connector_id = requestParameters.connector_id;\n        const updated_since = requestParameters.updated_since;\n        const limit = requestParameters.limit;\n        const org_ids = requestParameters.org_ids;\n        const resource_id = requestParameters.resource_id;\n        const page_at_id = requestParameters.page_at_id;\n        const name_slug = requestParameters.name_slug;\n        const desktop_type = requestParameters.desktop_type;\n        const has_remote_app = requestParameters.has_remote_app;\n        const page_on = requestParameters.page_on;\n        const page_at_key = requestParameters.page_at_key;\n        const page_sort = requestParameters.page_sort;\n        const search_direction = requestParameters.search_direction;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name, 'name');\n        }\n        if (connector_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>connector_id, 'connector_id');\n        }\n        if (updated_since !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>updated_since, 'updated_since');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_ids) {\n            org_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'org_ids');\n            })\n        }\n        if (resource_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_id, 'resource_id');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (name_slug !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name_slug, 'name_slug');\n        }\n        if (desktop_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>desktop_type, 'desktop_type');\n        }\n        if (has_remote_app !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>has_remote_app, 'has_remote_app');\n        }\n        if (page_on) {\n            page_on.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_on');\n            })\n        }\n        if (page_at_key) {\n            page_at_key.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_at_key');\n            })\n        }\n        if (page_sort) {\n            page_sort.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_sort');\n            })\n        }\n        if (search_direction !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>search_direction, 'search_direction');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListDesktopResourcesResponse>(`${this.configuration.basePath}/v1/desktop_resources`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListDesktopResourcesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListDesktopResourcesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a subset of the FileShareServices\n     * Retrieves all FileShareServices owned by the Organisation.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listFileShareServices(requestParameters: ListFileShareServicesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListFileShareServicesResponse>;\n    public listFileShareServices(requestParameters: ListFileShareServicesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListFileShareServicesResponse>>;\n    public listFileShareServices(requestParameters: ListFileShareServicesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListFileShareServicesResponse>>;\n    public listFileShareServices(requestParameters: ListFileShareServicesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const name = requestParameters.name;\n        const connector_id = requestParameters.connector_id;\n        const updated_since = requestParameters.updated_since;\n        const limit = requestParameters.limit;\n        const org_ids = requestParameters.org_ids;\n        const resource_id = requestParameters.resource_id;\n        const page_at_id = requestParameters.page_at_id;\n        const page_on = requestParameters.page_on;\n        const page_at_key = requestParameters.page_at_key;\n        const page_sort = requestParameters.page_sort;\n        const search_direction = requestParameters.search_direction;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name, 'name');\n        }\n        if (connector_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>connector_id, 'connector_id');\n        }\n        if (updated_since !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>updated_since, 'updated_since');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_ids) {\n            org_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'org_ids');\n            })\n        }\n        if (resource_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_id, 'resource_id');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (page_on) {\n            page_on.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_on');\n            })\n        }\n        if (page_at_key) {\n            page_at_key.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_at_key');\n            })\n        }\n        if (page_sort) {\n            page_sort.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_sort');\n            })\n        }\n        if (search_direction !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>search_direction, 'search_direction');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListFileShareServicesResponse>(`${this.configuration.basePath}/v1/file_share_services`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListFileShareServicesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListFileShareServicesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a subset of the ServiceForwarder objects\n     * Retrieves all ServiceForwarder objects owned by the Organisation.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listServiceForwarders(requestParameters: ListServiceForwardersRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListServiceForwardersResponse>;\n    public listServiceForwarders(requestParameters: ListServiceForwardersRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListServiceForwardersResponse>>;\n    public listServiceForwarders(requestParameters: ListServiceForwardersRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListServiceForwardersResponse>>;\n    public listServiceForwarders(requestParameters: ListServiceForwardersRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const name = requestParameters.name;\n        const app_service_id = requestParameters.app_service_id;\n        const connector_id = requestParameters.connector_id;\n        const app_service_connector_id = requestParameters.app_service_connector_id;\n        const updated_since = requestParameters.updated_since;\n        const limit = requestParameters.limit;\n        const org_ids = requestParameters.org_ids;\n        const page_on = requestParameters.page_on;\n        const page_at_key = requestParameters.page_at_key;\n        const page_sort = requestParameters.page_sort;\n        const search_direction = requestParameters.search_direction;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name, 'name');\n        }\n        if (app_service_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>app_service_id, 'app_service_id');\n        }\n        if (connector_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>connector_id, 'connector_id');\n        }\n        if (app_service_connector_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>app_service_connector_id, 'app_service_connector_id');\n        }\n        if (updated_since !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>updated_since, 'updated_since');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_ids) {\n            org_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'org_ids');\n            })\n        }\n        if (page_on) {\n            page_on.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_on');\n            })\n        }\n        if (page_at_key) {\n            page_at_key.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_at_key');\n            })\n        }\n        if (page_sort) {\n            page_sort.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_sort');\n            })\n        }\n        if (search_direction !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>search_direction, 'search_direction');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListServiceForwardersResponse>(`${this.configuration.basePath}/v1/service_forwarders`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListServiceForwardersResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListServiceForwardersResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a subset of the SSHResource objects.\n     * Retrieves SSHResource objects owned by the Organisation.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listSshResources(requestParameters: ListSshResourcesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListSSHResourcesResponse>;\n    public listSshResources(requestParameters: ListSshResourcesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListSSHResourcesResponse>>;\n    public listSshResources(requestParameters: ListSshResourcesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListSSHResourcesResponse>>;\n    public listSshResources(requestParameters: ListSshResourcesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const name = requestParameters.name;\n        const connector_id = requestParameters.connector_id;\n        const updated_since = requestParameters.updated_since;\n        const limit = requestParameters.limit;\n        const org_ids = requestParameters.org_ids;\n        const resource_id = requestParameters.resource_id;\n        const page_at_id = requestParameters.page_at_id;\n        const name_slug = requestParameters.name_slug;\n        const page_on = requestParameters.page_on;\n        const page_at_key = requestParameters.page_at_key;\n        const page_sort = requestParameters.page_sort;\n        const search_direction = requestParameters.search_direction;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name, 'name');\n        }\n        if (connector_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>connector_id, 'connector_id');\n        }\n        if (updated_since !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>updated_since, 'updated_since');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_ids) {\n            org_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'org_ids');\n            })\n        }\n        if (resource_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_id, 'resource_id');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (name_slug !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name_slug, 'name_slug');\n        }\n        if (page_on) {\n            page_on.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_on');\n            })\n        }\n        if (page_at_key) {\n            page_at_key.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_at_key');\n            })\n        }\n        if (page_sort) {\n            page_sort.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_sort');\n            })\n        }\n        if (search_direction !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>search_direction, 'search_direction');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListSSHResourcesResponse>(`${this.configuration.basePath}/v1/ssh_resources`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListSSHResourcesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListSSHResourcesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create or update an Application Service.\n     * Create or update an Application Service.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceApplicationService(requestParameters: ReplaceApplicationServiceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ApplicationService>;\n    public replaceApplicationService(requestParameters: ReplaceApplicationServiceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ApplicationService>>;\n    public replaceApplicationService(requestParameters: ReplaceApplicationServiceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ApplicationService>>;\n    public replaceApplicationService(requestParameters: ReplaceApplicationServiceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_service_id = requestParameters.app_service_id;\n        if (app_service_id === null || app_service_id === undefined) {\n            throw new Error('Required parameter app_service_id was null or undefined when calling replaceApplicationService.');\n        }\n        const ApplicationService = requestParameters.ApplicationService;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_ApplicationService>(`${this.configuration.basePath}/v2/application_services/${encodeURIComponent(String(app_service_id))}`,\n                    ApplicationService,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ApplicationService) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ApplicationServiceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create or update a DatabaseResource.\n     * Create or update a DatabaseResource.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceDatabaseResource(requestParameters: ReplaceDatabaseResourceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<DatabaseResource>;\n    public replaceDatabaseResource(requestParameters: ReplaceDatabaseResourceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<DatabaseResource>>;\n    public replaceDatabaseResource(requestParameters: ReplaceDatabaseResourceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<DatabaseResource>>;\n    public replaceDatabaseResource(requestParameters: ReplaceDatabaseResourceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_id = requestParameters.resource_id;\n        if (resource_id === null || resource_id === undefined) {\n            throw new Error('Required parameter resource_id was null or undefined when calling replaceDatabaseResource.');\n        }\n        const DatabaseResource = requestParameters.DatabaseResource;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_DatabaseResource>(`${this.configuration.basePath}/v1/database_resources/${encodeURIComponent(String(resource_id))}`,\n                    DatabaseResource,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _DatabaseResource) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new DatabaseResourceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create or update a DesktopResource.\n     * Create or update a DesktopResource.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceDesktopResource(requestParameters: ReplaceDesktopResourceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<DesktopResource>;\n    public replaceDesktopResource(requestParameters: ReplaceDesktopResourceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<DesktopResource>>;\n    public replaceDesktopResource(requestParameters: ReplaceDesktopResourceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<DesktopResource>>;\n    public replaceDesktopResource(requestParameters: ReplaceDesktopResourceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_id = requestParameters.resource_id;\n        if (resource_id === null || resource_id === undefined) {\n            throw new Error('Required parameter resource_id was null or undefined when calling replaceDesktopResource.');\n        }\n        const DesktopResource = requestParameters.DesktopResource;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_DesktopResource>(`${this.configuration.basePath}/v1/desktop_resources/${encodeURIComponent(String(resource_id))}`,\n                    DesktopResource,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _DesktopResource) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new DesktopResourceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create or update an FileShareService.\n     * Create or update an FileShareService.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceFileShareService(requestParameters: ReplaceFileShareServiceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<FileShareService>;\n    public replaceFileShareService(requestParameters: ReplaceFileShareServiceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<FileShareService>>;\n    public replaceFileShareService(requestParameters: ReplaceFileShareServiceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<FileShareService>>;\n    public replaceFileShareService(requestParameters: ReplaceFileShareServiceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const file_share_service_id = requestParameters.file_share_service_id;\n        if (file_share_service_id === null || file_share_service_id === undefined) {\n            throw new Error('Required parameter file_share_service_id was null or undefined when calling replaceFileShareService.');\n        }\n        const FileShareService = requestParameters.FileShareService;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_FileShareService>(`${this.configuration.basePath}/v1/file_share_services/${encodeURIComponent(String(file_share_service_id))}`,\n                    FileShareService,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _FileShareService) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new FileShareServiceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create or update an ServiceForwarder.\n     * Create or update an ServiceForwarder.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceServiceForwarder(requestParameters: ReplaceServiceForwarderRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ServiceForwarder>;\n    public replaceServiceForwarder(requestParameters: ReplaceServiceForwarderRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ServiceForwarder>>;\n    public replaceServiceForwarder(requestParameters: ReplaceServiceForwarderRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ServiceForwarder>>;\n    public replaceServiceForwarder(requestParameters: ReplaceServiceForwarderRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const service_forwarder_id = requestParameters.service_forwarder_id;\n        if (service_forwarder_id === null || service_forwarder_id === undefined) {\n            throw new Error('Required parameter service_forwarder_id was null or undefined when calling replaceServiceForwarder.');\n        }\n        const ServiceForwarder = requestParameters.ServiceForwarder;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_ServiceForwarder>(`${this.configuration.basePath}/v1/service_forwarders/${encodeURIComponent(String(service_forwarder_id))}`,\n                    ServiceForwarder,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ServiceForwarder) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ServiceForwarderImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create or update a SSHResource.\n     * Create or update a SSHResource.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceSshResource(requestParameters: ReplaceSshResourceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<SSHResource>;\n    public replaceSshResource(requestParameters: ReplaceSshResourceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<SSHResource>>;\n    public replaceSshResource(requestParameters: ReplaceSshResourceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<SSHResource>>;\n    public replaceSshResource(requestParameters: ReplaceSshResourceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_id = requestParameters.resource_id;\n        if (resource_id === null || resource_id === undefined) {\n            throw new Error('Required parameter resource_id was null or undefined when calling replaceSshResource.');\n        }\n        const SSHResource = requestParameters.SSHResource;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_SSHResource>(`${this.configuration.basePath}/v1/ssh_resources/${encodeURIComponent(String(resource_id))}`,\n                    SSHResource,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _SSHResource) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new SSHResourceImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _Application, Application, ApplicationImpl } from '../model/models';\nimport { _Environment, Environment, EnvironmentImpl } from '../model/models';\nimport { _EnvironmentConfig, EnvironmentConfig, EnvironmentConfigImpl } from '../model/models';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _ListApplicationSummaryResponse, ListApplicationSummaryResponse, ListApplicationSummaryResponseImpl } from '../model/models';\nimport { _ListApplicationsResponse, ListApplicationsResponse, ListApplicationsResponseImpl } from '../model/models';\nimport { _ListCombinedRulesResponse, ListCombinedRulesResponse, ListCombinedRulesResponseImpl } from '../model/models';\nimport { _ListConfigsResponse, ListConfigsResponse, ListConfigsResponseImpl } from '../model/models';\nimport { _ListEnvironmentConfigsResponse, ListEnvironmentConfigsResponse, ListEnvironmentConfigsResponseImpl } from '../model/models';\nimport { _ListRoleToRuleEntries, ListRoleToRuleEntries, ListRoleToRuleEntriesImpl } from '../model/models';\nimport { _ListRoles, ListRoles, ListRolesImpl } from '../model/models';\nimport { _ListRules, ListRules, ListRulesImpl } from '../model/models';\nimport { _OrgScopePatchDocument, OrgScopePatchDocument, OrgScopePatchDocumentImpl } from '../model/models';\nimport { _RoleToRuleEntry, RoleToRuleEntry, RoleToRuleEntryImpl } from '../model/models';\nimport { _RoleV2, RoleV2, RoleV2Impl } from '../model/models';\nimport { _RuleScopeEnum, RuleScopeEnum, RuleScopeEnumImpl } from '../model/models';\nimport { _RuleV2, RuleV2, RuleV2Impl } from '../model/models';\nimport { _RuntimeStatus, RuntimeStatus, RuntimeStatusImpl } from '../model/models';\nimport { _UsageMetric, UsageMetric, UsageMetricImpl } from '../model/models';\nimport { _UsageMetrics, UsageMetrics, UsageMetricsImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    ApplicationsServiceInterface,\n    AddConfigRequestParams,\n    AddRoleRequestParams,\n    AddRoleToRuleEntryRequestParams,\n    AddRuleRequestParams,\n    CreateApplicationRequestParams,\n    DeleteApplicationRequestParams,\n    DeleteConfigRequestParams,\n    DeleteRoleRequestParams,\n    DeleteRoleToRuleEntryRequestParams,\n    DeleteRuleRequestParams,\n    GetAllUsageMetricsRequestParams,\n    GetApplicationRequestParams,\n    GetApplicationUsageMetricsRequestParams,\n    GetConfigRequestParams,\n    GetEnvironmentRequestParams,\n    GetRoleRequestParams,\n    GetRoleToRuleEntryRequestParams,\n    GetRuleRequestParams,\n    ListApplicationSummariesRequestParams,\n    ListApplicationsRequestParams,\n    ListCombinedRulesRequestParams,\n    ListConfigsRequestParams,\n    ListEnvironmentConfigsAllAppsRequestParams,\n    ListRoleToRuleEntriesRequestParams,\n    ListRolesRequestParams,\n    ListRulesRequestParams,\n    ListRuntimeStatusRequestParams,\n    ReplaceApplicationRequestParams,\n    ReplaceConfigRequestParams,\n    ReplaceEnvironmentRequestParams,\n    ReplaceRoleRequestParams,\n    ReplaceRoleToRuleEntryRequestParams,\n    ReplaceRuleRequestParams,\n    ReplaceRuntimeStatusRequestParams,\n    UpdatePatchApplicationRequestParams\n} from './applications.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ApplicationsService implements ApplicationsServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Add an environment configuration row\n     * Add an environment configuration row\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public addConfig(requestParameters: AddConfigRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<EnvironmentConfig>;\n    public addConfig(requestParameters: AddConfigRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<EnvironmentConfig>>;\n    public addConfig(requestParameters: AddConfigRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<EnvironmentConfig>>;\n    public addConfig(requestParameters: AddConfigRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling addConfig.');\n        }\n        const env_name = requestParameters.env_name;\n        if (env_name === null || env_name === undefined) {\n            throw new Error('Required parameter env_name was null or undefined when calling addConfig.');\n        }\n        const EnvironmentConfig = requestParameters.EnvironmentConfig;\n        if (EnvironmentConfig === null || EnvironmentConfig === undefined) {\n            throw new Error('Required parameter EnvironmentConfig was null or undefined when calling addConfig.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_EnvironmentConfig>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/environments/${encodeURIComponent(String(env_name))}/configs`,\n                    EnvironmentConfig,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _EnvironmentConfig) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new EnvironmentConfigImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Add a role to the application.\n     * Add a role to the application.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public addRole(requestParameters: AddRoleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<RoleV2>;\n    public addRole(requestParameters: AddRoleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<RoleV2>>;\n    public addRole(requestParameters: AddRoleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<RoleV2>>;\n    public addRole(requestParameters: AddRoleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling addRole.');\n        }\n        const RoleV2 = requestParameters.RoleV2;\n        if (RoleV2 === null || RoleV2 === undefined) {\n            throw new Error('Required parameter RoleV2 was null or undefined when calling addRole.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_RoleV2>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/roles`,\n                    RoleV2,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _RoleV2) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RoleV2Impl(response)\n            })\n        );\n    }\n\n    /**\n     * Add a rule to a role in the application.\n     * Add a rule to a role in the application.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public addRoleToRuleEntry(requestParameters: AddRoleToRuleEntryRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<RoleToRuleEntry>;\n    public addRoleToRuleEntry(requestParameters: AddRoleToRuleEntryRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<RoleToRuleEntry>>;\n    public addRoleToRuleEntry(requestParameters: AddRoleToRuleEntryRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<RoleToRuleEntry>>;\n    public addRoleToRuleEntry(requestParameters: AddRoleToRuleEntryRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling addRoleToRuleEntry.');\n        }\n        const RoleToRuleEntry = requestParameters.RoleToRuleEntry;\n        if (RoleToRuleEntry === null || RoleToRuleEntry === undefined) {\n            throw new Error('Required parameter RoleToRuleEntry was null or undefined when calling addRoleToRuleEntry.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_RoleToRuleEntry>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/role_to_rule_entries`,\n                    RoleToRuleEntry,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _RoleToRuleEntry) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RoleToRuleEntryImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Add a rule to the application.\n     * Add a rule to the application.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public addRule(requestParameters: AddRuleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<RuleV2>;\n    public addRule(requestParameters: AddRuleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<RuleV2>>;\n    public addRule(requestParameters: AddRuleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<RuleV2>>;\n    public addRule(requestParameters: AddRuleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling addRule.');\n        }\n        const RuleV2 = requestParameters.RuleV2;\n        if (RuleV2 === null || RuleV2 === undefined) {\n            throw new Error('Required parameter RuleV2 was null or undefined when calling addRule.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_RuleV2>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/rules`,\n                    RuleV2,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _RuleV2) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RuleV2Impl(response)\n            })\n        );\n    }\n\n    /**\n     * Create an application\n     * Create an application according to spec\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createApplication(requestParameters: CreateApplicationRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Application>;\n    public createApplication(requestParameters: CreateApplicationRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Application>>;\n    public createApplication(requestParameters: CreateApplicationRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Application>>;\n    public createApplication(requestParameters: CreateApplicationRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const Application = requestParameters.Application;\n        if (Application === null || Application === undefined) {\n            throw new Error('Required parameter Application was null or undefined when calling createApplication.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Application>(`${this.configuration.basePath}/v2/applications`,\n                    Application,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Application) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ApplicationImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Remove an application\n     * Remove an application\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteApplication(requestParameters: DeleteApplicationRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteApplication(requestParameters: DeleteApplicationRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteApplication(requestParameters: DeleteApplicationRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteApplication(requestParameters: DeleteApplicationRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling deleteApplication.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Remove an environment configuration\n     * Remove an environment configuration\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteConfig(requestParameters: DeleteConfigRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteConfig(requestParameters: DeleteConfigRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteConfig(requestParameters: DeleteConfigRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteConfig(requestParameters: DeleteConfigRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling deleteConfig.');\n        }\n        const env_name = requestParameters.env_name;\n        if (env_name === null || env_name === undefined) {\n            throw new Error('Required parameter env_name was null or undefined when calling deleteConfig.');\n        }\n        const env_config_id = requestParameters.env_config_id;\n        if (env_config_id === null || env_config_id === undefined) {\n            throw new Error('Required parameter env_config_id was null or undefined when calling deleteConfig.');\n        }\n        const maintenance_org_id = requestParameters.maintenance_org_id;\n        if (maintenance_org_id === null || maintenance_org_id === undefined) {\n            throw new Error('Required parameter maintenance_org_id was null or undefined when calling deleteConfig.');\n        }\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (maintenance_org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>maintenance_org_id, 'maintenance_org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/environments/${encodeURIComponent(String(env_name))}/configs/${encodeURIComponent(String(env_config_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Remove a role\n     * Remove a role\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteRole(requestParameters: DeleteRoleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteRole(requestParameters: DeleteRoleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteRole(requestParameters: DeleteRoleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteRole(requestParameters: DeleteRoleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling deleteRole.');\n        }\n        const role_id = requestParameters.role_id;\n        if (role_id === null || role_id === undefined) {\n            throw new Error('Required parameter role_id was null or undefined when calling deleteRole.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/roles/${encodeURIComponent(String(role_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Remove a role_to_rule_entry\n     * Remove a role_to_rule_entry\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteRoleToRuleEntry(requestParameters: DeleteRoleToRuleEntryRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteRoleToRuleEntry(requestParameters: DeleteRoleToRuleEntryRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteRoleToRuleEntry(requestParameters: DeleteRoleToRuleEntryRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteRoleToRuleEntry(requestParameters: DeleteRoleToRuleEntryRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling deleteRoleToRuleEntry.');\n        }\n        const role_to_rule_entry_id = requestParameters.role_to_rule_entry_id;\n        if (role_to_rule_entry_id === null || role_to_rule_entry_id === undefined) {\n            throw new Error('Required parameter role_to_rule_entry_id was null or undefined when calling deleteRoleToRuleEntry.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/role_to_rule_entries/${encodeURIComponent(String(role_to_rule_entry_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Remove a rule\n     * Remove a rule\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteRule(requestParameters: DeleteRuleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteRule(requestParameters: DeleteRuleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteRule(requestParameters: DeleteRuleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteRule(requestParameters: DeleteRuleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling deleteRule.');\n        }\n        const rule_id = requestParameters.rule_id;\n        if (rule_id === null || rule_id === undefined) {\n            throw new Error('Required parameter rule_id was null or undefined when calling deleteRule.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/rules/${encodeURIComponent(String(rule_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get all resource metrics for the Applications API\n     * Retrieves all resource metrics for the Applications API for a specified the org_id. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getAllUsageMetrics(requestParameters: GetAllUsageMetricsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UsageMetrics>;\n    public getAllUsageMetrics(requestParameters: GetAllUsageMetricsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UsageMetrics>>;\n    public getAllUsageMetrics(requestParameters: GetAllUsageMetricsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UsageMetrics>>;\n    public getAllUsageMetrics(requestParameters: GetAllUsageMetricsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling getAllUsageMetrics.');\n        }\n        const org_ids = requestParameters.org_ids;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (org_ids) {\n            org_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'org_ids');\n            })\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_UsageMetrics>(`${this.configuration.basePath}/v1/resources/usage_metrics`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UsageMetrics) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UsageMetricsImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a application\n     * Get a application\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getApplication(requestParameters: GetApplicationRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Application>;\n    public getApplication(requestParameters: GetApplicationRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Application>>;\n    public getApplication(requestParameters: GetApplicationRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Application>>;\n    public getApplication(requestParameters: GetApplicationRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling getApplication.');\n        }\n        const org_id = requestParameters.org_id;\n        const assigned_org_id = requestParameters.assigned_org_id;\n        const include_migrated_environments = requestParameters.include_migrated_environments;\n        const get_scopes = requestParameters.get_scopes;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (assigned_org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>assigned_org_id, 'assigned_org_id');\n        }\n        if (include_migrated_environments !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>include_migrated_environments, 'include_migrated_environments');\n        }\n        if (get_scopes !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_scopes, 'get_scopes');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Application>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Application) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ApplicationImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get application metrics\n     * Retrieves all application metrics related to the org_id. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getApplicationUsageMetrics(requestParameters: GetApplicationUsageMetricsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UsageMetric>;\n    public getApplicationUsageMetrics(requestParameters: GetApplicationUsageMetricsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UsageMetric>>;\n    public getApplicationUsageMetrics(requestParameters: GetApplicationUsageMetricsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UsageMetric>>;\n    public getApplicationUsageMetrics(requestParameters: GetApplicationUsageMetricsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling getApplicationUsageMetrics.');\n        }\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_UsageMetric>(`${this.configuration.basePath}/v2/applications/usage_metrics`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UsageMetric) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UsageMetricImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get environment configuration\n     * Retrieve environment configuration \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getConfig(requestParameters: GetConfigRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<EnvironmentConfig>;\n    public getConfig(requestParameters: GetConfigRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<EnvironmentConfig>>;\n    public getConfig(requestParameters: GetConfigRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<EnvironmentConfig>>;\n    public getConfig(requestParameters: GetConfigRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling getConfig.');\n        }\n        const env_name = requestParameters.env_name;\n        if (env_name === null || env_name === undefined) {\n            throw new Error('Required parameter env_name was null or undefined when calling getConfig.');\n        }\n        const env_config_id = requestParameters.env_config_id;\n        if (env_config_id === null || env_config_id === undefined) {\n            throw new Error('Required parameter env_config_id was null or undefined when calling getConfig.');\n        }\n        const maintenance_org_id = requestParameters.maintenance_org_id;\n        if (maintenance_org_id === null || maintenance_org_id === undefined) {\n            throw new Error('Required parameter maintenance_org_id was null or undefined when calling getConfig.');\n        }\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (maintenance_org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>maintenance_org_id, 'maintenance_org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_EnvironmentConfig>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/environments/${encodeURIComponent(String(env_name))}/configs/${encodeURIComponent(String(env_config_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _EnvironmentConfig) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new EnvironmentConfigImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get an environment\n     * This allows an environment maintainer to get an environment they maintain. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getEnvironment(requestParameters: GetEnvironmentRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Environment>;\n    public getEnvironment(requestParameters: GetEnvironmentRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Environment>>;\n    public getEnvironment(requestParameters: GetEnvironmentRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Environment>>;\n    public getEnvironment(requestParameters: GetEnvironmentRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling getEnvironment.');\n        }\n        const env_name = requestParameters.env_name;\n        if (env_name === null || env_name === undefined) {\n            throw new Error('Required parameter env_name was null or undefined when calling getEnvironment.');\n        }\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling getEnvironment.');\n        }\n        const get_scopes = requestParameters.get_scopes;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (get_scopes !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_scopes, 'get_scopes');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Environment>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/environments/${encodeURIComponent(String(env_name))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Environment) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new EnvironmentImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a role\n     * Retrieves a given role by ID \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getRole(requestParameters: GetRoleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<RoleV2>;\n    public getRole(requestParameters: GetRoleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<RoleV2>>;\n    public getRole(requestParameters: GetRoleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<RoleV2>>;\n    public getRole(requestParameters: GetRoleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling getRole.');\n        }\n        const role_id = requestParameters.role_id;\n        if (role_id === null || role_id === undefined) {\n            throw new Error('Required parameter role_id was null or undefined when calling getRole.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_RoleV2>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/roles/${encodeURIComponent(String(role_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _RoleV2) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RoleV2Impl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a role_to_rule_entry\n     * Retrieves a given role_to_rule_entry by ID \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getRoleToRuleEntry(requestParameters: GetRoleToRuleEntryRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<RoleToRuleEntry>;\n    public getRoleToRuleEntry(requestParameters: GetRoleToRuleEntryRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<RoleToRuleEntry>>;\n    public getRoleToRuleEntry(requestParameters: GetRoleToRuleEntryRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<RoleToRuleEntry>>;\n    public getRoleToRuleEntry(requestParameters: GetRoleToRuleEntryRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling getRoleToRuleEntry.');\n        }\n        const role_to_rule_entry_id = requestParameters.role_to_rule_entry_id;\n        if (role_to_rule_entry_id === null || role_to_rule_entry_id === undefined) {\n            throw new Error('Required parameter role_to_rule_entry_id was null or undefined when calling getRoleToRuleEntry.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_RoleToRuleEntry>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/role_to_rule_entries/${encodeURIComponent(String(role_to_rule_entry_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _RoleToRuleEntry) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RoleToRuleEntryImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a rule\n     * Retrieves a given rule by ID \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getRule(requestParameters: GetRuleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<RuleV2>;\n    public getRule(requestParameters: GetRuleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<RuleV2>>;\n    public getRule(requestParameters: GetRuleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<RuleV2>>;\n    public getRule(requestParameters: GetRuleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling getRule.');\n        }\n        const rule_id = requestParameters.rule_id;\n        if (rule_id === null || rule_id === undefined) {\n            throw new Error('Required parameter rule_id was null or undefined when calling getRule.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_RuleV2>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/rules/${encodeURIComponent(String(rule_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _RuleV2) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RuleV2Impl(response)\n            })\n        );\n    }\n\n    /**\n     * List application summaries\n     * Retrieve all application summaries corresponding to the provided parameters. One summary will exist per organisation assigned to the application. If a single org id is provided in the &#x60;org_id&#x60; parameter, then all assignments for all applications owned by that org will be listed. If a list of org ids are provided via the &#x60;assigned_org_ids&#x60; parameter, then the assignments will be constrained to ones for those org ids. Note that these two org id parameters can work together. One constrains the applications, and the other the assignments, so the combination of the two could be used to show a subset of the assignments for a given organisation\\&#39;s applications. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listApplicationSummaries(requestParameters: ListApplicationSummariesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListApplicationSummaryResponse>;\n    public listApplicationSummaries(requestParameters: ListApplicationSummariesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListApplicationSummaryResponse>>;\n    public listApplicationSummaries(requestParameters: ListApplicationSummariesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListApplicationSummaryResponse>>;\n    public listApplicationSummaries(requestParameters: ListApplicationSummariesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const assigned_org_ids = requestParameters.assigned_org_ids;\n        const resource_id = requestParameters.resource_id;\n        const limit = requestParameters.limit;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (assigned_org_ids) {\n            assigned_org_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'assigned_org_ids');\n            })\n        }\n        if (resource_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_id, 'resource_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListApplicationSummaryResponse>(`${this.configuration.basePath}/v2/application_summaries`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListApplicationSummaryResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListApplicationSummaryResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get applications\n     * Retrieves all applications related to the org_id. Different types of relationship may be queried by setting the appropriate flags:   - assigned: Has an Environment assigned to the organisation.   - owned: Owned by the organisation.   - maintained: Has an Environment maintained by the organisation. Any combination of the relationship flags may be set. Note that if the organisation does not own the Application, but maintains or is assigned an environment only those assignments and environments for the querying organisation will be shown. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listApplications(requestParameters: ListApplicationsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListApplicationsResponse>;\n    public listApplications(requestParameters: ListApplicationsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListApplicationsResponse>>;\n    public listApplications(requestParameters: ListApplicationsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListApplicationsResponse>>;\n    public listApplications(requestParameters: ListApplicationsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const assigned_org_id = requestParameters.assigned_org_id;\n        const maintained = requestParameters.maintained;\n        const assigned = requestParameters.assigned;\n        const owned = requestParameters.owned;\n        const updated_since = requestParameters.updated_since;\n        const show_status = requestParameters.show_status;\n        const application_type = requestParameters.application_type;\n        const include_migrated_environments = requestParameters.include_migrated_environments;\n        const resource_id = requestParameters.resource_id;\n        const limit = requestParameters.limit;\n        const page_on = requestParameters.page_on;\n        const page_at_key = requestParameters.page_at_key;\n        const page_sort = requestParameters.page_sort;\n        const search_direction = requestParameters.search_direction;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (assigned_org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>assigned_org_id, 'assigned_org_id');\n        }\n        if (maintained !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>maintained, 'maintained');\n        }\n        if (assigned !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>assigned, 'assigned');\n        }\n        if (owned !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>owned, 'owned');\n        }\n        if (updated_since !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>updated_since, 'updated_since');\n        }\n        if (show_status !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>show_status, 'show_status');\n        }\n        if (application_type) {\n            application_type.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'application_type');\n            })\n        }\n        if (include_migrated_environments !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>include_migrated_environments, 'include_migrated_environments');\n        }\n        if (resource_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_id, 'resource_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (page_on) {\n            page_on.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_on');\n            })\n        }\n        if (page_at_key) {\n            page_at_key.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_at_key');\n            })\n        }\n        if (page_sort) {\n            page_sort.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_sort');\n            })\n        }\n        if (search_direction !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>search_direction, 'search_direction');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListApplicationsResponse>(`${this.configuration.basePath}/v2/applications`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListApplicationsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListApplicationsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List rules combined by scope or role\n     * Retrieve all role_to_rule_entries for an application. If assigned is true, this will list all role_to_rule_entries for applications assigned to the given org_id \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listCombinedRules(requestParameters: ListCombinedRulesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListCombinedRulesResponse>;\n    public listCombinedRules(requestParameters: ListCombinedRulesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListCombinedRulesResponse>>;\n    public listCombinedRules(requestParameters: ListCombinedRulesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListCombinedRulesResponse>>;\n    public listCombinedRules(requestParameters: ListCombinedRulesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const scopes = requestParameters.scopes;\n        const app_id = requestParameters.app_id;\n        const limit = requestParameters.limit;\n        const assigned = requestParameters.assigned;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (scopes) {\n            scopes.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'scopes');\n            })\n        }\n        if (app_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>app_id, 'app_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (assigned !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>assigned, 'assigned');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListCombinedRulesResponse>(`${this.configuration.basePath}/v2/combined_rules`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListCombinedRulesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListCombinedRulesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all environment configuration\n     * Retrieve all environment configuration \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listConfigs(requestParameters: ListConfigsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListConfigsResponse>;\n    public listConfigs(requestParameters: ListConfigsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListConfigsResponse>>;\n    public listConfigs(requestParameters: ListConfigsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListConfigsResponse>>;\n    public listConfigs(requestParameters: ListConfigsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling listConfigs.');\n        }\n        const env_name = requestParameters.env_name;\n        if (env_name === null || env_name === undefined) {\n            throw new Error('Required parameter env_name was null or undefined when calling listConfigs.');\n        }\n        const maintenance_org_id = requestParameters.maintenance_org_id;\n        if (maintenance_org_id === null || maintenance_org_id === undefined) {\n            throw new Error('Required parameter maintenance_org_id was null or undefined when calling listConfigs.');\n        }\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (maintenance_org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>maintenance_org_id, 'maintenance_org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListConfigsResponse>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/environments/${encodeURIComponent(String(env_name))}/configs`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListConfigsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListConfigsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all environment configuration for a given organisation.\n     * Retrieve all environment configuration for a organisation. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listEnvironmentConfigsAllApps(requestParameters: ListEnvironmentConfigsAllAppsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListEnvironmentConfigsResponse>;\n    public listEnvironmentConfigsAllApps(requestParameters: ListEnvironmentConfigsAllAppsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListEnvironmentConfigsResponse>>;\n    public listEnvironmentConfigsAllApps(requestParameters: ListEnvironmentConfigsAllAppsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListEnvironmentConfigsResponse>>;\n    public listEnvironmentConfigsAllApps(requestParameters: ListEnvironmentConfigsAllAppsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const maintenance_org_id = requestParameters.maintenance_org_id;\n        if (maintenance_org_id === null || maintenance_org_id === undefined) {\n            throw new Error('Required parameter maintenance_org_id was null or undefined when calling listEnvironmentConfigsAllApps.');\n        }\n        const limit = requestParameters.limit;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (maintenance_org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>maintenance_org_id, 'maintenance_org_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListEnvironmentConfigsResponse>(`${this.configuration.basePath}/v2/environment_configs`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListEnvironmentConfigsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListEnvironmentConfigsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all RoleToRuleEntries\n     * Retrieve all role_to_rule_entries for an application \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listRoleToRuleEntries(requestParameters: ListRoleToRuleEntriesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListRoleToRuleEntries>;\n    public listRoleToRuleEntries(requestParameters: ListRoleToRuleEntriesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListRoleToRuleEntries>>;\n    public listRoleToRuleEntries(requestParameters: ListRoleToRuleEntriesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListRoleToRuleEntries>>;\n    public listRoleToRuleEntries(requestParameters: ListRoleToRuleEntriesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling listRoleToRuleEntries.');\n        }\n        const org_id = requestParameters.org_id;\n        const limit = requestParameters.limit;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListRoleToRuleEntries>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/role_to_rule_entries`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListRoleToRuleEntries) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListRoleToRuleEntriesImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all roles\n     * Retrieve all roles for an application \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listRoles(requestParameters: ListRolesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListRoles>;\n    public listRoles(requestParameters: ListRolesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListRoles>>;\n    public listRoles(requestParameters: ListRolesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListRoles>>;\n    public listRoles(requestParameters: ListRolesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling listRoles.');\n        }\n        const org_id = requestParameters.org_id;\n        const limit = requestParameters.limit;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListRoles>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/roles`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListRoles) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListRolesImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all rules\n     * Retrieve all rules for an application \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listRules(requestParameters: ListRulesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListRules>;\n    public listRules(requestParameters: ListRulesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListRules>>;\n    public listRules(requestParameters: ListRulesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListRules>>;\n    public listRules(requestParameters: ListRulesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling listRules.');\n        }\n        const org_id = requestParameters.org_id;\n        const scope = requestParameters.scope;\n        const limit = requestParameters.limit;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (scope !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>scope, 'scope');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListRules>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/rules`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListRules) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListRulesImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get an environment\\&#39;s runtime status\n     * Get an environment\\&#39;s runtime status \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listRuntimeStatus(requestParameters: ListRuntimeStatusRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<RuntimeStatus>;\n    public listRuntimeStatus(requestParameters: ListRuntimeStatusRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<RuntimeStatus>>;\n    public listRuntimeStatus(requestParameters: ListRuntimeStatusRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<RuntimeStatus>>;\n    public listRuntimeStatus(requestParameters: ListRuntimeStatusRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling listRuntimeStatus.');\n        }\n        const env_name = requestParameters.env_name;\n        if (env_name === null || env_name === undefined) {\n            throw new Error('Required parameter env_name was null or undefined when calling listRuntimeStatus.');\n        }\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling listRuntimeStatus.');\n        }\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_RuntimeStatus>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/environments/${encodeURIComponent(String(env_name))}/status/runtime_status`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _RuntimeStatus) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RuntimeStatusImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create or update an application\n     * Create or update an application\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceApplication(requestParameters: ReplaceApplicationRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Application>;\n    public replaceApplication(requestParameters: ReplaceApplicationRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Application>>;\n    public replaceApplication(requestParameters: ReplaceApplicationRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Application>>;\n    public replaceApplication(requestParameters: ReplaceApplicationRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling replaceApplication.');\n        }\n        const Application = requestParameters.Application;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_Application>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}`,\n                    Application,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Application) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ApplicationImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update environment configuration\n     * Update environment configuration \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceConfig(requestParameters: ReplaceConfigRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<EnvironmentConfig>;\n    public replaceConfig(requestParameters: ReplaceConfigRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<EnvironmentConfig>>;\n    public replaceConfig(requestParameters: ReplaceConfigRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<EnvironmentConfig>>;\n    public replaceConfig(requestParameters: ReplaceConfigRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling replaceConfig.');\n        }\n        const env_name = requestParameters.env_name;\n        if (env_name === null || env_name === undefined) {\n            throw new Error('Required parameter env_name was null or undefined when calling replaceConfig.');\n        }\n        const env_config_id = requestParameters.env_config_id;\n        if (env_config_id === null || env_config_id === undefined) {\n            throw new Error('Required parameter env_config_id was null or undefined when calling replaceConfig.');\n        }\n        const EnvironmentConfig = requestParameters.EnvironmentConfig;\n        if (EnvironmentConfig === null || EnvironmentConfig === undefined) {\n            throw new Error('Required parameter EnvironmentConfig was null or undefined when calling replaceConfig.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_EnvironmentConfig>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/environments/${encodeURIComponent(String(env_name))}/configs/${encodeURIComponent(String(env_config_id))}`,\n                    EnvironmentConfig,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _EnvironmentConfig) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new EnvironmentConfigImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update an environment\n     * This allows an environment maintainer to update the environment. Note that the maintenence_organisation in the body must match the existing one. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceEnvironment(requestParameters: ReplaceEnvironmentRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Environment>;\n    public replaceEnvironment(requestParameters: ReplaceEnvironmentRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Environment>>;\n    public replaceEnvironment(requestParameters: ReplaceEnvironmentRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Environment>>;\n    public replaceEnvironment(requestParameters: ReplaceEnvironmentRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling replaceEnvironment.');\n        }\n        const env_name = requestParameters.env_name;\n        if (env_name === null || env_name === undefined) {\n            throw new Error('Required parameter env_name was null or undefined when calling replaceEnvironment.');\n        }\n        const get_scopes = requestParameters.get_scopes;\n        const Environment = requestParameters.Environment;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (get_scopes !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_scopes, 'get_scopes');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_Environment>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/environments/${encodeURIComponent(String(env_name))}`,\n                    Environment,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Environment) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new EnvironmentImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a role\n     * Updates a role with a new specification. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceRole(requestParameters: ReplaceRoleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<RoleV2>;\n    public replaceRole(requestParameters: ReplaceRoleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<RoleV2>>;\n    public replaceRole(requestParameters: ReplaceRoleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<RoleV2>>;\n    public replaceRole(requestParameters: ReplaceRoleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling replaceRole.');\n        }\n        const role_id = requestParameters.role_id;\n        if (role_id === null || role_id === undefined) {\n            throw new Error('Required parameter role_id was null or undefined when calling replaceRole.');\n        }\n        const RoleV2 = requestParameters.RoleV2;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_RoleV2>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/roles/${encodeURIComponent(String(role_id))}`,\n                    RoleV2,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _RoleV2) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RoleV2Impl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a role_to_rule_entry\n     * Updates a role_to_rule_entry with a new specification. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     * @deprecated\n     */\n    public replaceRoleToRuleEntry(requestParameters: ReplaceRoleToRuleEntryRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<RoleToRuleEntry>;\n    public replaceRoleToRuleEntry(requestParameters: ReplaceRoleToRuleEntryRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<RoleToRuleEntry>>;\n    public replaceRoleToRuleEntry(requestParameters: ReplaceRoleToRuleEntryRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<RoleToRuleEntry>>;\n    public replaceRoleToRuleEntry(requestParameters: ReplaceRoleToRuleEntryRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling replaceRoleToRuleEntry.');\n        }\n        const role_to_rule_entry_id = requestParameters.role_to_rule_entry_id;\n        if (role_to_rule_entry_id === null || role_to_rule_entry_id === undefined) {\n            throw new Error('Required parameter role_to_rule_entry_id was null or undefined when calling replaceRoleToRuleEntry.');\n        }\n        const RoleToRuleEntry = requestParameters.RoleToRuleEntry;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_RoleToRuleEntry>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/role_to_rule_entries/${encodeURIComponent(String(role_to_rule_entry_id))}`,\n                    RoleToRuleEntry,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _RoleToRuleEntry) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RoleToRuleEntryImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a rule\n     * Updates a rule with a new specification. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceRule(requestParameters: ReplaceRuleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<RuleV2>;\n    public replaceRule(requestParameters: ReplaceRuleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<RuleV2>>;\n    public replaceRule(requestParameters: ReplaceRuleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<RuleV2>>;\n    public replaceRule(requestParameters: ReplaceRuleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling replaceRule.');\n        }\n        const rule_id = requestParameters.rule_id;\n        if (rule_id === null || rule_id === undefined) {\n            throw new Error('Required parameter rule_id was null or undefined when calling replaceRule.');\n        }\n        const RuleV2 = requestParameters.RuleV2;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_RuleV2>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/rules/${encodeURIComponent(String(rule_id))}`,\n                    RuleV2,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _RuleV2) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RuleV2Impl(response)\n            })\n        );\n    }\n\n    /**\n     * update an environemnt\\&#39;s runtime status\n     * update an environemnt\\&#39;s runtime status\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceRuntimeStatus(requestParameters: ReplaceRuntimeStatusRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<RuntimeStatus>;\n    public replaceRuntimeStatus(requestParameters: ReplaceRuntimeStatusRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<RuntimeStatus>>;\n    public replaceRuntimeStatus(requestParameters: ReplaceRuntimeStatusRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<RuntimeStatus>>;\n    public replaceRuntimeStatus(requestParameters: ReplaceRuntimeStatusRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling replaceRuntimeStatus.');\n        }\n        const env_name = requestParameters.env_name;\n        if (env_name === null || env_name === undefined) {\n            throw new Error('Required parameter env_name was null or undefined when calling replaceRuntimeStatus.');\n        }\n        const RuntimeStatus = requestParameters.RuntimeStatus;\n        if (RuntimeStatus === null || RuntimeStatus === undefined) {\n            throw new Error('Required parameter RuntimeStatus was null or undefined when calling replaceRuntimeStatus.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_RuntimeStatus>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}/environments/${encodeURIComponent(String(env_name))}/status/runtime_status`,\n                    RuntimeStatus,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _RuntimeStatus) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RuntimeStatusImpl(response)\n            })\n        );\n    }\n\n    /**\n     * patch application\n     * patch application\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public updatePatchApplication(requestParameters: UpdatePatchApplicationRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Application>;\n    public updatePatchApplication(requestParameters: UpdatePatchApplicationRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Application>>;\n    public updatePatchApplication(requestParameters: UpdatePatchApplicationRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Application>>;\n    public updatePatchApplication(requestParameters: UpdatePatchApplicationRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const app_id = requestParameters.app_id;\n        if (app_id === null || app_id === undefined) {\n            throw new Error('Required parameter app_id was null or undefined when calling updatePatchApplication.');\n        }\n        const OrgScopePatchDocument = requestParameters.OrgScopePatchDocument;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.patch<_Application>(`${this.configuration.basePath}/v2/applications/${encodeURIComponent(String(app_id))}`,\n                    OrgScopePatchDocument,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Application) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ApplicationImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _AuditDestination, AuditDestination, AuditDestinationImpl } from '../model/models';\nimport { _AuditWebhookBulkEvent, AuditWebhookBulkEvent, AuditWebhookBulkEventImpl } from '../model/models';\nimport { _AuditWebhookEventsProcessed, AuditWebhookEventsProcessed, AuditWebhookEventsProcessedImpl } from '../model/models';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _ListAuditDestinationsResponse, ListAuditDestinationsResponse, ListAuditDestinationsResponseImpl } from '../model/models';\nimport { _ListAuditsResponse, ListAuditsResponse, ListAuditsResponseImpl } from '../model/models';\nimport { _ListAuthAuditsResponse, ListAuthAuditsResponse, ListAuthAuditsResponseImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    AuditsServiceInterface,\n    BulkCreateEventsRequestParams,\n    CreateAuditDestinationRequestParams,\n    DeleteAuditDestinationRequestParams,\n    GetAuditDestinationRequestParams,\n    ListAuditDestinationsRequestParams,\n    ListAuditsRequestParams,\n    ListAuthRecordsRequestParams,\n    ReplaceAuditDestinationRequestParams\n} from './audits.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class AuditsService implements AuditsServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Process an AuditWebhookBulkEvent\n     * Processes an AuditWebhookBulkEvent by putting it into the audit event pipeline. Agilicus audit agents expect webhook destinations to obey the semantics of this API, though the URL at which to post AuditWebhookEvents may differ from this. That is, this API specification may be used to develop your own webhook for processing events. If the webhook wants to implement fine-grained processing of events, it should respond with the AuditWebhookEventProcessed response. Otherwise, the audit agent should assume that the response applies to all entries. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public bulkCreateEvents(requestParameters: BulkCreateEventsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AuditWebhookEventsProcessed>;\n    public bulkCreateEvents(requestParameters: BulkCreateEventsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AuditWebhookEventsProcessed>>;\n    public bulkCreateEvents(requestParameters: BulkCreateEventsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AuditWebhookEventsProcessed>>;\n    public bulkCreateEvents(requestParameters: BulkCreateEventsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const AuditWebhookBulkEvent = requestParameters.AuditWebhookBulkEvent;\n        if (AuditWebhookBulkEvent === null || AuditWebhookBulkEvent === undefined) {\n            throw new Error('Required parameter AuditWebhookBulkEvent was null or undefined when calling bulkCreateEvents.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_AuditWebhookEventsProcessed>(`${this.configuration.basePath}/v1/bulk_audit_events`,\n                    AuditWebhookBulkEvent,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AuditWebhookEventsProcessed) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AuditWebhookEventsProcessedImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create an AuditDestination\n     * Creating a new AuditDestination allows administrators to connect their sources of audit events to somewhere they can be stored. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createAuditDestination(requestParameters: CreateAuditDestinationRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AuditDestination>;\n    public createAuditDestination(requestParameters: CreateAuditDestinationRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AuditDestination>>;\n    public createAuditDestination(requestParameters: CreateAuditDestinationRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AuditDestination>>;\n    public createAuditDestination(requestParameters: CreateAuditDestinationRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const AuditDestination = requestParameters.AuditDestination;\n        if (AuditDestination === null || AuditDestination === undefined) {\n            throw new Error('Required parameter AuditDestination was null or undefined when calling createAuditDestination.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_AuditDestination>(`${this.configuration.basePath}/v1/audit_destinations`,\n                    AuditDestination,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AuditDestination) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AuditDestinationImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Remove an AuditDestination\n     * Remove an AuditDestination. After removal, the system will stop sending events to the destination. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteAuditDestination(requestParameters: DeleteAuditDestinationRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteAuditDestination(requestParameters: DeleteAuditDestinationRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteAuditDestination(requestParameters: DeleteAuditDestinationRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteAuditDestination(requestParameters: DeleteAuditDestinationRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const destination_id = requestParameters.destination_id;\n        if (destination_id === null || destination_id === undefined) {\n            throw new Error('Required parameter destination_id was null or undefined when calling deleteAuditDestination.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/audit_destinations/${encodeURIComponent(String(destination_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get a single AuditDestination\n     * Get the details of a single AuditDestination. Specify the id of the organisation which owns this resource to ensure you have permission. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getAuditDestination(requestParameters: GetAuditDestinationRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AuditDestination>;\n    public getAuditDestination(requestParameters: GetAuditDestinationRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AuditDestination>>;\n    public getAuditDestination(requestParameters: GetAuditDestinationRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AuditDestination>>;\n    public getAuditDestination(requestParameters: GetAuditDestinationRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const destination_id = requestParameters.destination_id;\n        if (destination_id === null || destination_id === undefined) {\n            throw new Error('Required parameter destination_id was null or undefined when calling getAuditDestination.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_AuditDestination>(`${this.configuration.basePath}/v1/audit_destinations/${encodeURIComponent(String(destination_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AuditDestination) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AuditDestinationImpl(response)\n            })\n        );\n    }\n\n    /**\n     * View audit destinations\n     * View configured audit destinations\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listAuditDestinations(requestParameters: ListAuditDestinationsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListAuditDestinationsResponse>;\n    public listAuditDestinations(requestParameters: ListAuditDestinationsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListAuditDestinationsResponse>>;\n    public listAuditDestinations(requestParameters: ListAuditDestinationsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListAuditDestinationsResponse>>;\n    public listAuditDestinations(requestParameters: ListAuditDestinationsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const destination_type = requestParameters.destination_type;\n        const name = requestParameters.name;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (destination_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>destination_type, 'destination_type');\n        }\n        if (name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name, 'name');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListAuditDestinationsResponse>(`${this.configuration.basePath}/v1/audit_destinations`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListAuditDestinationsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListAuditDestinationsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * View audit records\n     * View audit records for any API.  The attribute_type, attribute_id and attribute_org_id query provides the ability to query attributes for an audit record across all possible attributes thay maybe associated with a record, as audit records may have multiple multiple attributes (AuditAttribute) per record. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listAudits(requestParameters: ListAuditsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListAuditsResponse>;\n    public listAudits(requestParameters: ListAuditsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListAuditsResponse>>;\n    public listAudits(requestParameters: ListAuditsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListAuditsResponse>>;\n    public listAudits(requestParameters: ListAuditsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const user_id = requestParameters.user_id;\n        const dt_from = requestParameters.dt_from;\n        const dt_to = requestParameters.dt_to;\n        const action = requestParameters.action;\n        const target_id = requestParameters.target_id;\n        const token_id = requestParameters.token_id;\n        const api_name = requestParameters.api_name;\n        const target_resource_type = requestParameters.target_resource_type;\n        const org_id = requestParameters.org_id;\n        const attribute_type = requestParameters.attribute_type;\n        const attribute_id = requestParameters.attribute_id;\n        const attribute_org_id = requestParameters.attribute_org_id;\n        const resources_behind_connector_id = requestParameters.resources_behind_connector_id;\n        const attribute_type_list = requestParameters.attribute_type_list;\n        const attribute_id_list = requestParameters.attribute_id_list;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (dt_from !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>dt_from, 'dt_from');\n        }\n        if (dt_to !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>dt_to, 'dt_to');\n        }\n        if (action !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>action, 'action');\n        }\n        if (target_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>target_id, 'target_id');\n        }\n        if (token_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>token_id, 'token_id');\n        }\n        if (api_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>api_name, 'api_name');\n        }\n        if (target_resource_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>target_resource_type, 'target_resource_type');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (attribute_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>attribute_type, 'attribute_type');\n        }\n        if (attribute_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>attribute_id, 'attribute_id');\n        }\n        if (attribute_org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>attribute_org_id, 'attribute_org_id');\n        }\n        if (resources_behind_connector_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resources_behind_connector_id, 'resources_behind_connector_id');\n        }\n        if (attribute_type_list) {\n            attribute_type_list.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'attribute_type_list');\n            })\n        }\n        if (attribute_id_list) {\n            attribute_id_list.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'attribute_id_list');\n            })\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListAuditsResponse>(`${this.configuration.basePath}/v1/audits`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListAuditsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListAuditsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * View authentication audit records\n     * View and search authentication audit records for different users and organisations in the system. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listAuthRecords(requestParameters: ListAuthRecordsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListAuthAuditsResponse>;\n    public listAuthRecords(requestParameters: ListAuthRecordsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListAuthAuditsResponse>>;\n    public listAuthRecords(requestParameters: ListAuthRecordsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListAuthAuditsResponse>>;\n    public listAuthRecords(requestParameters: ListAuthRecordsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const user_id = requestParameters.user_id;\n        const dt_from = requestParameters.dt_from;\n        const dt_to = requestParameters.dt_to;\n        const org_id = requestParameters.org_id;\n        const session_id = requestParameters.session_id;\n        const trace_id = requestParameters.trace_id;\n        const upstream_user_id = requestParameters.upstream_user_id;\n        const upstream_idp = requestParameters.upstream_idp;\n        const login_org_id = requestParameters.login_org_id;\n        const source_ip = requestParameters.source_ip;\n        const client_id = requestParameters.client_id;\n        const event = requestParameters.event;\n        const stage = requestParameters.stage;\n        const request_id = requestParameters.request_id;\n        const result = requestParameters.result;\n        const event_name = requestParameters.event_name;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (dt_from !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>dt_from, 'dt_from');\n        }\n        if (dt_to !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>dt_to, 'dt_to');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (session_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>session_id, 'session_id');\n        }\n        if (trace_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>trace_id, 'trace_id');\n        }\n        if (upstream_user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>upstream_user_id, 'upstream_user_id');\n        }\n        if (upstream_idp !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>upstream_idp, 'upstream_idp');\n        }\n        if (login_org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>login_org_id, 'login_org_id');\n        }\n        if (source_ip !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>source_ip, 'source_ip');\n        }\n        if (client_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>client_id, 'client_id');\n        }\n        if (event !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>event, 'event');\n        }\n        if (stage !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>stage, 'stage');\n        }\n        if (request_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>request_id, 'request_id');\n        }\n        if (result !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>result, 'result');\n        }\n        if (event_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>event_name, 'event_name');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListAuthAuditsResponse>(`${this.configuration.basePath}/v1/auth_audits`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListAuthAuditsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListAuthAuditsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create or update a AuditDestination.\n     * Create or update a AuditDestination.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceAuditDestination(requestParameters: ReplaceAuditDestinationRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AuditDestination>;\n    public replaceAuditDestination(requestParameters: ReplaceAuditDestinationRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AuditDestination>>;\n    public replaceAuditDestination(requestParameters: ReplaceAuditDestinationRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AuditDestination>>;\n    public replaceAuditDestination(requestParameters: ReplaceAuditDestinationRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const destination_id = requestParameters.destination_id;\n        if (destination_id === null || destination_id === undefined) {\n            throw new Error('Required parameter destination_id was null or undefined when calling replaceAuditDestination.');\n        }\n        const AuditDestination = requestParameters.AuditDestination;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_AuditDestination>(`${this.configuration.basePath}/v1/audit_destinations/${encodeURIComponent(String(destination_id))}`,\n                    AuditDestination,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AuditDestination) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AuditDestinationImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _BillingAccount, BillingAccount, BillingAccountImpl } from '../model/models';\nimport { _BillingAccountCurrencyMigration, BillingAccountCurrencyMigration, BillingAccountCurrencyMigrationImpl } from '../model/models';\nimport { _BillingBalanceTransaction, BillingBalanceTransaction, BillingBalanceTransactionImpl } from '../model/models';\nimport { _BillingOrg, BillingOrg, BillingOrgImpl } from '../model/models';\nimport { _BillingOrgSubscription, BillingOrgSubscription, BillingOrgSubscriptionImpl } from '../model/models';\nimport { _BillingSubscriptionNewSubscription, BillingSubscriptionNewSubscription, BillingSubscriptionNewSubscriptionImpl } from '../model/models';\nimport { _CreateBillingUsageRecords, CreateBillingUsageRecords, CreateBillingUsageRecordsImpl } from '../model/models';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _Feature, Feature, FeatureImpl } from '../model/models';\nimport { _ListBillingAccountsResponse, ListBillingAccountsResponse, ListBillingAccountsResponseImpl } from '../model/models';\nimport { _ListBillingBalanceTransactions, ListBillingBalanceTransactions, ListBillingBalanceTransactionsImpl } from '../model/models';\nimport { _ListBillingCheckoutSessions, ListBillingCheckoutSessions, ListBillingCheckoutSessionsImpl } from '../model/models';\nimport { _ListBillingOrgSubscriptionsResponse, ListBillingOrgSubscriptionsResponse, ListBillingOrgSubscriptionsResponseImpl } from '../model/models';\nimport { _ListBillingUsageRecordsResponse, ListBillingUsageRecordsResponse, ListBillingUsageRecordsResponseImpl } from '../model/models';\nimport { _ListFeaturesResponse, ListFeaturesResponse, ListFeaturesResponseImpl } from '../model/models';\nimport { _ListOrgsResponse, ListOrgsResponse, ListOrgsResponseImpl } from '../model/models';\nimport { _ListProductsResponse, ListProductsResponse, ListProductsResponseImpl } from '../model/models';\nimport { _Organisation, Organisation, OrganisationImpl } from '../model/models';\nimport { _Product, Product, ProductImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    BillingServiceInterface,\n    AddBillingUsageRecordRequestParams,\n    AddCustomerBalanceTransactionRequestParams,\n    AddOrgToBillingAccountRequestParams,\n    AddOrgToBillingSubscriptionRequestParams,\n    AddSubscriptionBalanceTransactionRequestParams,\n    CreateBillingAccountRequestParams,\n    CreateCurrencyMigrationRequestParams,\n    CreateFeatureRequestParams,\n    CreateProductRequestParams,\n    CreateSubscriptionRequestParams,\n    DeleteBillingAccountRequestParams,\n    DeleteFeatureRequestParams,\n    DeleteProductRequestParams,\n    DeleteSubscriptionRequestParams,\n    GetBillingAccountRequestParams,\n    GetBillingAccountOrgsRequestParams,\n    GetBillingSubscriptionOrgsRequestParams,\n    GetCustomerBalanceTransactionsRequestParams,\n    GetFeatureRequestParams,\n    GetProductRequestParams,\n    GetSubscriptionRequestParams,\n    GetSubscriptionBalanceTransactionsRequestParams,\n    GetUsageRecordsRequestParams,\n    ListBillingAccountsRequestParams,\n    ListCheckoutSessionsRequestParams,\n    ListFeaturesRequestParams,\n    ListProductsRequestParams,\n    ListSubscriptionFeaturesRequestParams,\n    ListSubscriptionsRequestParams,\n    ListSubscriptionsWithFeatureRequestParams,\n    NewSubscriptionRequestParams,\n    RemoveOrgFromBillingAccountRequestParams,\n    RemoveOrgFromBillingSubscriptionRequestParams,\n    ReplaceBillingAccountRequestParams,\n    ReplaceFeatureRequestParams,\n    ReplaceProductRequestParams,\n    ReplaceSubscriptionRequestParams,\n    UpdateSubscriptionCancellationRequestParams\n} from './billing.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class BillingService implements BillingServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Add usage records for a billing account\n     * Add usage records for a billing account\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public addBillingUsageRecord(requestParameters: AddBillingUsageRecordRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<CreateBillingUsageRecords>;\n    public addBillingUsageRecord(requestParameters: AddBillingUsageRecordRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<CreateBillingUsageRecords>>;\n    public addBillingUsageRecord(requestParameters: AddBillingUsageRecordRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<CreateBillingUsageRecords>>;\n    public addBillingUsageRecord(requestParameters: AddBillingUsageRecordRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const billing_account_id = requestParameters.billing_account_id;\n        if (billing_account_id === null || billing_account_id === undefined) {\n            throw new Error('Required parameter billing_account_id was null or undefined when calling addBillingUsageRecord.');\n        }\n        const CreateBillingUsageRecords = requestParameters.CreateBillingUsageRecords;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_CreateBillingUsageRecords>(`${this.configuration.basePath}/v1/billing_accounts/${encodeURIComponent(String(billing_account_id))}/usage_records`,\n                    CreateBillingUsageRecords,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _CreateBillingUsageRecords) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new CreateBillingUsageRecordsImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Add a customer balance transaction\n     * Add a customer balance transaction\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public addCustomerBalanceTransaction(requestParameters: AddCustomerBalanceTransactionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<BillingBalanceTransaction>;\n    public addCustomerBalanceTransaction(requestParameters: AddCustomerBalanceTransactionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<BillingBalanceTransaction>>;\n    public addCustomerBalanceTransaction(requestParameters: AddCustomerBalanceTransactionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<BillingBalanceTransaction>>;\n    public addCustomerBalanceTransaction(requestParameters: AddCustomerBalanceTransactionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const billing_account_id = requestParameters.billing_account_id;\n        if (billing_account_id === null || billing_account_id === undefined) {\n            throw new Error('Required parameter billing_account_id was null or undefined when calling addCustomerBalanceTransaction.');\n        }\n        const BillingBalanceTransaction = requestParameters.BillingBalanceTransaction;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_BillingBalanceTransaction>(`${this.configuration.basePath}/v1/billing_accounts/${encodeURIComponent(String(billing_account_id))}/balance_transactions`,\n                    BillingBalanceTransaction,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _BillingBalanceTransaction) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new BillingBalanceTransactionImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Add an org to a billing account\n     * Add an org to a billing account\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public addOrgToBillingAccount(requestParameters: AddOrgToBillingAccountRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Organisation>;\n    public addOrgToBillingAccount(requestParameters: AddOrgToBillingAccountRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Organisation>>;\n    public addOrgToBillingAccount(requestParameters: AddOrgToBillingAccountRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Organisation>>;\n    public addOrgToBillingAccount(requestParameters: AddOrgToBillingAccountRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const billing_account_id = requestParameters.billing_account_id;\n        if (billing_account_id === null || billing_account_id === undefined) {\n            throw new Error('Required parameter billing_account_id was null or undefined when calling addOrgToBillingAccount.');\n        }\n        const BillingOrg = requestParameters.BillingOrg;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Organisation>(`${this.configuration.basePath}/v1/billing_accounts/${encodeURIComponent(String(billing_account_id))}/orgs`,\n                    BillingOrg,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Organisation) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new OrganisationImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Add an org to a billing subscription\n     * Add an org to a billing subscription\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public addOrgToBillingSubscription(requestParameters: AddOrgToBillingSubscriptionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Organisation>;\n    public addOrgToBillingSubscription(requestParameters: AddOrgToBillingSubscriptionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Organisation>>;\n    public addOrgToBillingSubscription(requestParameters: AddOrgToBillingSubscriptionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Organisation>>;\n    public addOrgToBillingSubscription(requestParameters: AddOrgToBillingSubscriptionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const billing_subscription_id = requestParameters.billing_subscription_id;\n        if (billing_subscription_id === null || billing_subscription_id === undefined) {\n            throw new Error('Required parameter billing_subscription_id was null or undefined when calling addOrgToBillingSubscription.');\n        }\n        const BillingOrg = requestParameters.BillingOrg;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Organisation>(`${this.configuration.basePath}/v1/billing_subscriptions/${encodeURIComponent(String(billing_subscription_id))}/orgs`,\n                    BillingOrg,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Organisation) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new OrganisationImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Add a subscription balance transaction\n     * Add a subscription balance transaction\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public addSubscriptionBalanceTransaction(requestParameters: AddSubscriptionBalanceTransactionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<BillingBalanceTransaction>;\n    public addSubscriptionBalanceTransaction(requestParameters: AddSubscriptionBalanceTransactionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<BillingBalanceTransaction>>;\n    public addSubscriptionBalanceTransaction(requestParameters: AddSubscriptionBalanceTransactionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<BillingBalanceTransaction>>;\n    public addSubscriptionBalanceTransaction(requestParameters: AddSubscriptionBalanceTransactionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const billing_subscription_id = requestParameters.billing_subscription_id;\n        if (billing_subscription_id === null || billing_subscription_id === undefined) {\n            throw new Error('Required parameter billing_subscription_id was null or undefined when calling addSubscriptionBalanceTransaction.');\n        }\n        const BillingBalanceTransaction = requestParameters.BillingBalanceTransaction;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_BillingBalanceTransaction>(`${this.configuration.basePath}/v1/billing_subscriptions/${encodeURIComponent(String(billing_subscription_id))}/balance_transactions`,\n                    BillingBalanceTransaction,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _BillingBalanceTransaction) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new BillingBalanceTransactionImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a billing account\n     * Create a billing account\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createBillingAccount(requestParameters: CreateBillingAccountRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<BillingAccount>;\n    public createBillingAccount(requestParameters: CreateBillingAccountRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<BillingAccount>>;\n    public createBillingAccount(requestParameters: CreateBillingAccountRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<BillingAccount>>;\n    public createBillingAccount(requestParameters: CreateBillingAccountRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const BillingAccount = requestParameters.BillingAccount;\n        if (BillingAccount === null || BillingAccount === undefined) {\n            throw new Error('Required parameter BillingAccount was null or undefined when calling createBillingAccount.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_BillingAccount>(`${this.configuration.basePath}/v1/billing_accounts`,\n                    BillingAccount,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _BillingAccount) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new BillingAccountImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Migrate a billing account to a new currency\n     * Migrates a billing account to a new currency. This operation is cumulative: on failure, it can be rerun. It will resume where it failed. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createCurrencyMigration(requestParameters: CreateCurrencyMigrationRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Organisation>;\n    public createCurrencyMigration(requestParameters: CreateCurrencyMigrationRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Organisation>>;\n    public createCurrencyMigration(requestParameters: CreateCurrencyMigrationRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Organisation>>;\n    public createCurrencyMigration(requestParameters: CreateCurrencyMigrationRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const billing_account_id = requestParameters.billing_account_id;\n        if (billing_account_id === null || billing_account_id === undefined) {\n            throw new Error('Required parameter billing_account_id was null or undefined when calling createCurrencyMigration.');\n        }\n        const BillingAccountCurrencyMigration = requestParameters.BillingAccountCurrencyMigration;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Organisation>(`${this.configuration.basePath}/v1/billing_accounts/${encodeURIComponent(String(billing_account_id))}/currency_migrations`,\n                    BillingAccountCurrencyMigration,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Organisation) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new OrganisationImpl(response)\n            })\n        );\n    }\n\n    /**\n     * create a feature\n     * create a feature\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createFeature(requestParameters: CreateFeatureRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Feature>;\n    public createFeature(requestParameters: CreateFeatureRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Feature>>;\n    public createFeature(requestParameters: CreateFeatureRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Feature>>;\n    public createFeature(requestParameters: CreateFeatureRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const Feature = requestParameters.Feature;\n        if (Feature === null || Feature === undefined) {\n            throw new Error('Required parameter Feature was null or undefined when calling createFeature.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Feature>(`${this.configuration.basePath}/v1/features`,\n                    Feature,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Feature) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new FeatureImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a product\n     * Create a product\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createProduct(requestParameters: CreateProductRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Product>;\n    public createProduct(requestParameters: CreateProductRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Product>>;\n    public createProduct(requestParameters: CreateProductRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Product>>;\n    public createProduct(requestParameters: CreateProductRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const Product = requestParameters.Product;\n        if (Product === null || Product === undefined) {\n            throw new Error('Required parameter Product was null or undefined when calling createProduct.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Product>(`${this.configuration.basePath}/v1/products`,\n                    Product,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Product) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ProductImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a billing subscription\n     * Create a billing subscription\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createSubscription(requestParameters: CreateSubscriptionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<BillingOrgSubscription>;\n    public createSubscription(requestParameters: CreateSubscriptionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<BillingOrgSubscription>>;\n    public createSubscription(requestParameters: CreateSubscriptionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<BillingOrgSubscription>>;\n    public createSubscription(requestParameters: CreateSubscriptionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const BillingOrgSubscription = requestParameters.BillingOrgSubscription;\n        if (BillingOrgSubscription === null || BillingOrgSubscription === undefined) {\n            throw new Error('Required parameter BillingOrgSubscription was null or undefined when calling createSubscription.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_BillingOrgSubscription>(`${this.configuration.basePath}/v1/billing_subscriptions`,\n                    BillingOrgSubscription,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _BillingOrgSubscription) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new BillingOrgSubscriptionImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a billing account\n     * Delete a billing account\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteBillingAccount(requestParameters: DeleteBillingAccountRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteBillingAccount(requestParameters: DeleteBillingAccountRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteBillingAccount(requestParameters: DeleteBillingAccountRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteBillingAccount(requestParameters: DeleteBillingAccountRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const billing_account_id = requestParameters.billing_account_id;\n        if (billing_account_id === null || billing_account_id === undefined) {\n            throw new Error('Required parameter billing_account_id was null or undefined when calling deleteBillingAccount.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/billing_accounts/${encodeURIComponent(String(billing_account_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a feature\n     * Delete a feature\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteFeature(requestParameters: DeleteFeatureRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteFeature(requestParameters: DeleteFeatureRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteFeature(requestParameters: DeleteFeatureRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteFeature(requestParameters: DeleteFeatureRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const feature_id = requestParameters.feature_id;\n        if (feature_id === null || feature_id === undefined) {\n            throw new Error('Required parameter feature_id was null or undefined when calling deleteFeature.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/features/${encodeURIComponent(String(feature_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a product\n     * Delete a product\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteProduct(requestParameters: DeleteProductRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteProduct(requestParameters: DeleteProductRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteProduct(requestParameters: DeleteProductRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteProduct(requestParameters: DeleteProductRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const product_id = requestParameters.product_id;\n        if (product_id === null || product_id === undefined) {\n            throw new Error('Required parameter product_id was null or undefined when calling deleteProduct.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/products/${encodeURIComponent(String(product_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a billing subscription\n     * Delete a billing subscription\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteSubscription(requestParameters: DeleteSubscriptionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteSubscription(requestParameters: DeleteSubscriptionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteSubscription(requestParameters: DeleteSubscriptionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteSubscription(requestParameters: DeleteSubscriptionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const billing_subscription_id = requestParameters.billing_subscription_id;\n        if (billing_subscription_id === null || billing_subscription_id === undefined) {\n            throw new Error('Required parameter billing_subscription_id was null or undefined when calling deleteSubscription.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/billing_subscriptions/${encodeURIComponent(String(billing_subscription_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get a single billing account\n     * Get a single billing account\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getBillingAccount(requestParameters: GetBillingAccountRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<BillingAccount>;\n    public getBillingAccount(requestParameters: GetBillingAccountRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<BillingAccount>>;\n    public getBillingAccount(requestParameters: GetBillingAccountRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<BillingAccount>>;\n    public getBillingAccount(requestParameters: GetBillingAccountRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const billing_account_id = requestParameters.billing_account_id;\n        if (billing_account_id === null || billing_account_id === undefined) {\n            throw new Error('Required parameter billing_account_id was null or undefined when calling getBillingAccount.');\n        }\n        const org_id = requestParameters.org_id;\n        const get_subscription_data = requestParameters.get_subscription_data;\n        const get_customer_data = requestParameters.get_customer_data;\n        const get_usage_metrics = requestParameters.get_usage_metrics;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (get_subscription_data !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_subscription_data, 'get_subscription_data');\n        }\n        if (get_customer_data !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_customer_data, 'get_customer_data');\n        }\n        if (get_usage_metrics !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_usage_metrics, 'get_usage_metrics');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_BillingAccount>(`${this.configuration.basePath}/v1/billing_accounts/${encodeURIComponent(String(billing_account_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _BillingAccount) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new BillingAccountImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all orgs in a billing account\n     * Get all orgs in a billing account\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getBillingAccountOrgs(requestParameters: GetBillingAccountOrgsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListOrgsResponse>;\n    public getBillingAccountOrgs(requestParameters: GetBillingAccountOrgsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListOrgsResponse>>;\n    public getBillingAccountOrgs(requestParameters: GetBillingAccountOrgsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListOrgsResponse>>;\n    public getBillingAccountOrgs(requestParameters: GetBillingAccountOrgsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const billing_account_id = requestParameters.billing_account_id;\n        if (billing_account_id === null || billing_account_id === undefined) {\n            throw new Error('Required parameter billing_account_id was null or undefined when calling getBillingAccountOrgs.');\n        }\n        const limit = requestParameters.limit;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListOrgsResponse>(`${this.configuration.basePath}/v1/billing_accounts/${encodeURIComponent(String(billing_account_id))}/orgs`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListOrgsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListOrgsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all orgs in a billing subscription\n     * Get all orgs in a billing subscription\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getBillingSubscriptionOrgs(requestParameters: GetBillingSubscriptionOrgsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListOrgsResponse>;\n    public getBillingSubscriptionOrgs(requestParameters: GetBillingSubscriptionOrgsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListOrgsResponse>>;\n    public getBillingSubscriptionOrgs(requestParameters: GetBillingSubscriptionOrgsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListOrgsResponse>>;\n    public getBillingSubscriptionOrgs(requestParameters: GetBillingSubscriptionOrgsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const billing_subscription_id = requestParameters.billing_subscription_id;\n        if (billing_subscription_id === null || billing_subscription_id === undefined) {\n            throw new Error('Required parameter billing_subscription_id was null or undefined when calling getBillingSubscriptionOrgs.');\n        }\n        const limit = requestParameters.limit;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListOrgsResponse>(`${this.configuration.basePath}/v1/billing_subscriptions/${encodeURIComponent(String(billing_subscription_id))}/orgs`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListOrgsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListOrgsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get the customers balance transactions\n     * Get the customers balance transactions\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getCustomerBalanceTransactions(requestParameters: GetCustomerBalanceTransactionsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListBillingBalanceTransactions>;\n    public getCustomerBalanceTransactions(requestParameters: GetCustomerBalanceTransactionsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListBillingBalanceTransactions>>;\n    public getCustomerBalanceTransactions(requestParameters: GetCustomerBalanceTransactionsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListBillingBalanceTransactions>>;\n    public getCustomerBalanceTransactions(requestParameters: GetCustomerBalanceTransactionsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const billing_account_id = requestParameters.billing_account_id;\n        if (billing_account_id === null || billing_account_id === undefined) {\n            throw new Error('Required parameter billing_account_id was null or undefined when calling getCustomerBalanceTransactions.');\n        }\n        const limit = requestParameters.limit;\n        const starting_after = requestParameters.starting_after;\n        const ending_before = requestParameters.ending_before;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (starting_after !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>starting_after, 'starting_after');\n        }\n        if (ending_before !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>ending_before, 'ending_before');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListBillingBalanceTransactions>(`${this.configuration.basePath}/v1/billing_accounts/${encodeURIComponent(String(billing_account_id))}/balance_transactions`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListBillingBalanceTransactions) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListBillingBalanceTransactionsImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a feature by id\n     * Get a feature by id\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getFeature(requestParameters: GetFeatureRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Feature>;\n    public getFeature(requestParameters: GetFeatureRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Feature>>;\n    public getFeature(requestParameters: GetFeatureRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Feature>>;\n    public getFeature(requestParameters: GetFeatureRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const feature_id = requestParameters.feature_id;\n        if (feature_id === null || feature_id === undefined) {\n            throw new Error('Required parameter feature_id was null or undefined when calling getFeature.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Feature>(`${this.configuration.basePath}/v1/features/${encodeURIComponent(String(feature_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Feature) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new FeatureImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a single product\n     * Get a single product\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getProduct(requestParameters: GetProductRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Product>;\n    public getProduct(requestParameters: GetProductRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Product>>;\n    public getProduct(requestParameters: GetProductRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Product>>;\n    public getProduct(requestParameters: GetProductRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const product_id = requestParameters.product_id;\n        if (product_id === null || product_id === undefined) {\n            throw new Error('Required parameter product_id was null or undefined when calling getProduct.');\n        }\n        const get_subscription_data = requestParameters.get_subscription_data;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (get_subscription_data !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_subscription_data, 'get_subscription_data');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Product>(`${this.configuration.basePath}/v1/products/${encodeURIComponent(String(product_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Product) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ProductImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a single billing subscription\n     * Get a single billing subscription\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getSubscription(requestParameters: GetSubscriptionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<BillingOrgSubscription>;\n    public getSubscription(requestParameters: GetSubscriptionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<BillingOrgSubscription>>;\n    public getSubscription(requestParameters: GetSubscriptionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<BillingOrgSubscription>>;\n    public getSubscription(requestParameters: GetSubscriptionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const billing_subscription_id = requestParameters.billing_subscription_id;\n        if (billing_subscription_id === null || billing_subscription_id === undefined) {\n            throw new Error('Required parameter billing_subscription_id was null or undefined when calling getSubscription.');\n        }\n        const get_subscription_data = requestParameters.get_subscription_data;\n        const get_customer_data = requestParameters.get_customer_data;\n        const expand_feature_overrides_query = requestParameters.expand_feature_overrides_query;\n        const get_usage_metrics = requestParameters.get_usage_metrics;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (get_subscription_data !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_subscription_data, 'get_subscription_data');\n        }\n        if (get_customer_data !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_customer_data, 'get_customer_data');\n        }\n        if (expand_feature_overrides_query !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>expand_feature_overrides_query, 'expand_feature_overrides_query');\n        }\n        if (get_usage_metrics !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_usage_metrics, 'get_usage_metrics');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_BillingOrgSubscription>(`${this.configuration.basePath}/v1/billing_subscriptions/${encodeURIComponent(String(billing_subscription_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _BillingOrgSubscription) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new BillingOrgSubscriptionImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get the subscription balance transactions\n     * Get the subscription balance transactions\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getSubscriptionBalanceTransactions(requestParameters: GetSubscriptionBalanceTransactionsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListBillingBalanceTransactions>;\n    public getSubscriptionBalanceTransactions(requestParameters: GetSubscriptionBalanceTransactionsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListBillingBalanceTransactions>>;\n    public getSubscriptionBalanceTransactions(requestParameters: GetSubscriptionBalanceTransactionsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListBillingBalanceTransactions>>;\n    public getSubscriptionBalanceTransactions(requestParameters: GetSubscriptionBalanceTransactionsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const billing_subscription_id = requestParameters.billing_subscription_id;\n        if (billing_subscription_id === null || billing_subscription_id === undefined) {\n            throw new Error('Required parameter billing_subscription_id was null or undefined when calling getSubscriptionBalanceTransactions.');\n        }\n        const limit = requestParameters.limit;\n        const starting_after = requestParameters.starting_after;\n        const ending_before = requestParameters.ending_before;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (starting_after !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>starting_after, 'starting_after');\n        }\n        if (ending_before !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>ending_before, 'ending_before');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListBillingBalanceTransactions>(`${this.configuration.basePath}/v1/billing_subscriptions/${encodeURIComponent(String(billing_subscription_id))}/balance_transactions`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListBillingBalanceTransactions) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListBillingBalanceTransactionsImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all subscription usage records\n     * Get all subscription usage records\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getUsageRecords(requestParameters: GetUsageRecordsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListBillingUsageRecordsResponse>;\n    public getUsageRecords(requestParameters: GetUsageRecordsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListBillingUsageRecordsResponse>>;\n    public getUsageRecords(requestParameters: GetUsageRecordsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListBillingUsageRecordsResponse>>;\n    public getUsageRecords(requestParameters: GetUsageRecordsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const billing_account_id = requestParameters.billing_account_id;\n        if (billing_account_id === null || billing_account_id === undefined) {\n            throw new Error('Required parameter billing_account_id was null or undefined when calling getUsageRecords.');\n        }\n        const limit = requestParameters.limit;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListBillingUsageRecordsResponse>(`${this.configuration.basePath}/v1/billing_accounts/${encodeURIComponent(String(billing_account_id))}/usage_records`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListBillingUsageRecordsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListBillingUsageRecordsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all billing accounts\n     * Get all billing accounts\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listBillingAccounts(requestParameters: ListBillingAccountsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListBillingAccountsResponse>;\n    public listBillingAccounts(requestParameters: ListBillingAccountsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListBillingAccountsResponse>>;\n    public listBillingAccounts(requestParameters: ListBillingAccountsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListBillingAccountsResponse>>;\n    public listBillingAccounts(requestParameters: ListBillingAccountsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const customer_id = requestParameters.customer_id;\n        const get_subscription_data = requestParameters.get_subscription_data;\n        const get_customer_data = requestParameters.get_customer_data;\n        const get_usage_metrics = requestParameters.get_usage_metrics;\n        const page_at_id = requestParameters.page_at_id;\n        const active_orgs_since = requestParameters.active_orgs_since;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (customer_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>customer_id, 'customer_id');\n        }\n        if (get_subscription_data !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_subscription_data, 'get_subscription_data');\n        }\n        if (get_customer_data !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_customer_data, 'get_customer_data');\n        }\n        if (get_usage_metrics !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_usage_metrics, 'get_usage_metrics');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (active_orgs_since !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>active_orgs_since, 'active_orgs_since');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListBillingAccountsResponse>(`${this.configuration.basePath}/v1/billing_accounts`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListBillingAccountsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListBillingAccountsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * list checkout sessions\n     * list checkout sessions\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listCheckoutSessions(requestParameters: ListCheckoutSessionsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListBillingCheckoutSessions>;\n    public listCheckoutSessions(requestParameters: ListCheckoutSessionsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListBillingCheckoutSessions>>;\n    public listCheckoutSessions(requestParameters: ListCheckoutSessionsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListBillingCheckoutSessions>>;\n    public listCheckoutSessions(requestParameters: ListCheckoutSessionsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const billing_account_id = requestParameters.billing_account_id;\n        if (billing_account_id === null || billing_account_id === undefined) {\n            throw new Error('Required parameter billing_account_id was null or undefined when calling listCheckoutSessions.');\n        }\n        const org_id = requestParameters.org_id;\n        const limit = requestParameters.limit;\n        const checkout_session_status = requestParameters.checkout_session_status;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (checkout_session_status !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>checkout_session_status, 'checkout_session_status');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListBillingCheckoutSessions>(`${this.configuration.basePath}/v1/billing_accounts/${encodeURIComponent(String(billing_account_id))}/checkout`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListBillingCheckoutSessions) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListBillingCheckoutSessionsImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all features\n     * Get all features\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listFeatures(requestParameters: ListFeaturesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListFeaturesResponse>;\n    public listFeatures(requestParameters: ListFeaturesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListFeaturesResponse>>;\n    public listFeatures(requestParameters: ListFeaturesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListFeaturesResponse>>;\n    public listFeatures(requestParameters: ListFeaturesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const key = requestParameters.key;\n        const name = requestParameters.name;\n        const prioritize_key = requestParameters.prioritize_key;\n        const product_id = requestParameters.product_id;\n        const subscription_id = requestParameters.subscription_id;\n        const billing_account_id = requestParameters.billing_account_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (key !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>key, 'key');\n        }\n        if (name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name, 'name');\n        }\n        if (prioritize_key !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>prioritize_key, 'prioritize_key');\n        }\n        if (product_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>product_id, 'product_id');\n        }\n        if (subscription_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>subscription_id, 'subscription_id');\n        }\n        if (billing_account_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>billing_account_id, 'billing_account_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListFeaturesResponse>(`${this.configuration.basePath}/v1/features`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListFeaturesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListFeaturesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all products\n     * Get all products\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listProducts(requestParameters: ListProductsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListProductsResponse>;\n    public listProducts(requestParameters: ListProductsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListProductsResponse>>;\n    public listProducts(requestParameters: ListProductsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListProductsResponse>>;\n    public listProducts(requestParameters: ListProductsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const get_subscription_data = requestParameters.get_subscription_data;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (get_subscription_data !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_subscription_data, 'get_subscription_data');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListProductsResponse>(`${this.configuration.basePath}/v1/products`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListProductsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListProductsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all subscription features\n     * Get all subscription features\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listSubscriptionFeatures(requestParameters: ListSubscriptionFeaturesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListFeaturesResponse>;\n    public listSubscriptionFeatures(requestParameters: ListSubscriptionFeaturesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListFeaturesResponse>>;\n    public listSubscriptionFeatures(requestParameters: ListSubscriptionFeaturesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListFeaturesResponse>>;\n    public listSubscriptionFeatures(requestParameters: ListSubscriptionFeaturesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const billing_subscription_id = requestParameters.billing_subscription_id;\n        if (billing_subscription_id === null || billing_subscription_id === undefined) {\n            throw new Error('Required parameter billing_subscription_id was null or undefined when calling listSubscriptionFeatures.');\n        }\n        const prioritize_key = requestParameters.prioritize_key;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (prioritize_key !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>prioritize_key, 'prioritize_key');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListFeaturesResponse>(`${this.configuration.basePath}/v1/billing_subscriptions/${encodeURIComponent(String(billing_subscription_id))}/features`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListFeaturesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListFeaturesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all billing subscriptions for a billing account\n     * Get all billing subscriptions for a billing account\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listSubscriptions(requestParameters: ListSubscriptionsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListBillingOrgSubscriptionsResponse>;\n    public listSubscriptions(requestParameters: ListSubscriptionsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListBillingOrgSubscriptionsResponse>>;\n    public listSubscriptions(requestParameters: ListSubscriptionsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListBillingOrgSubscriptionsResponse>>;\n    public listSubscriptions(requestParameters: ListSubscriptionsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const get_subscription_data = requestParameters.get_subscription_data;\n        const get_customer_data = requestParameters.get_customer_data;\n        const billing_account_id = requestParameters.billing_account_id;\n        const org_id = requestParameters.org_id;\n        const customer_id = requestParameters.customer_id;\n        const expand_feature_overrides_query = requestParameters.expand_feature_overrides_query;\n        const get_usage_metrics = requestParameters.get_usage_metrics;\n        const page_at_id = requestParameters.page_at_id;\n        const active_orgs_since = requestParameters.active_orgs_since;\n        const has_cancel_detail = requestParameters.has_cancel_detail;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (get_subscription_data !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_subscription_data, 'get_subscription_data');\n        }\n        if (get_customer_data !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_customer_data, 'get_customer_data');\n        }\n        if (billing_account_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>billing_account_id, 'billing_account_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (customer_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>customer_id, 'customer_id');\n        }\n        if (expand_feature_overrides_query !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>expand_feature_overrides_query, 'expand_feature_overrides_query');\n        }\n        if (get_usage_metrics !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_usage_metrics, 'get_usage_metrics');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (active_orgs_since !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>active_orgs_since, 'active_orgs_since');\n        }\n        if (has_cancel_detail !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>has_cancel_detail, 'has_cancel_detail');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListBillingOrgSubscriptionsResponse>(`${this.configuration.basePath}/v1/billing_subscriptions`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListBillingOrgSubscriptionsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListBillingOrgSubscriptionsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all subscriptions using feature_id\n     * Get all subscriptions using feature_id\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listSubscriptionsWithFeature(requestParameters: ListSubscriptionsWithFeatureRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListBillingOrgSubscriptionsResponse>;\n    public listSubscriptionsWithFeature(requestParameters: ListSubscriptionsWithFeatureRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListBillingOrgSubscriptionsResponse>>;\n    public listSubscriptionsWithFeature(requestParameters: ListSubscriptionsWithFeatureRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListBillingOrgSubscriptionsResponse>>;\n    public listSubscriptionsWithFeature(requestParameters: ListSubscriptionsWithFeatureRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const feature_id = requestParameters.feature_id;\n        if (feature_id === null || feature_id === undefined) {\n            throw new Error('Required parameter feature_id was null or undefined when calling listSubscriptionsWithFeature.');\n        }\n        const limit = requestParameters.limit;\n        const page_at_id = requestParameters.page_at_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListBillingOrgSubscriptionsResponse>(`${this.configuration.basePath}/v1/features/${encodeURIComponent(String(feature_id))}/subscriptions`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListBillingOrgSubscriptionsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListBillingOrgSubscriptionsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a new upstream subscription\n     * Create a new upstream subscription\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public newSubscription(requestParameters: NewSubscriptionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<BillingSubscriptionNewSubscription>;\n    public newSubscription(requestParameters: NewSubscriptionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<BillingSubscriptionNewSubscription>>;\n    public newSubscription(requestParameters: NewSubscriptionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<BillingSubscriptionNewSubscription>>;\n    public newSubscription(requestParameters: NewSubscriptionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const billing_subscription_id = requestParameters.billing_subscription_id;\n        if (billing_subscription_id === null || billing_subscription_id === undefined) {\n            throw new Error('Required parameter billing_subscription_id was null or undefined when calling newSubscription.');\n        }\n        const BillingSubscriptionNewSubscription = requestParameters.BillingSubscriptionNewSubscription;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_BillingSubscriptionNewSubscription>(`${this.configuration.basePath}/v1/billing_subscriptions/${encodeURIComponent(String(billing_subscription_id))}/new_subscription`,\n                    BillingSubscriptionNewSubscription,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _BillingSubscriptionNewSubscription) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new BillingSubscriptionNewSubscriptionImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Remove an org from a billing account\n     * From an org from a billing account\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public removeOrgFromBillingAccount(requestParameters: RemoveOrgFromBillingAccountRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public removeOrgFromBillingAccount(requestParameters: RemoveOrgFromBillingAccountRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public removeOrgFromBillingAccount(requestParameters: RemoveOrgFromBillingAccountRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public removeOrgFromBillingAccount(requestParameters: RemoveOrgFromBillingAccountRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const billing_account_id = requestParameters.billing_account_id;\n        if (billing_account_id === null || billing_account_id === undefined) {\n            throw new Error('Required parameter billing_account_id was null or undefined when calling removeOrgFromBillingAccount.');\n        }\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling removeOrgFromBillingAccount.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/billing_accounts/${encodeURIComponent(String(billing_account_id))}/orgs/${encodeURIComponent(String(org_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Remove an org from a billing subscription\n     * From an org from a billing subscription\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public removeOrgFromBillingSubscription(requestParameters: RemoveOrgFromBillingSubscriptionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public removeOrgFromBillingSubscription(requestParameters: RemoveOrgFromBillingSubscriptionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public removeOrgFromBillingSubscription(requestParameters: RemoveOrgFromBillingSubscriptionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public removeOrgFromBillingSubscription(requestParameters: RemoveOrgFromBillingSubscriptionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling removeOrgFromBillingSubscription.');\n        }\n        const billing_subscription_id = requestParameters.billing_subscription_id;\n        if (billing_subscription_id === null || billing_subscription_id === undefined) {\n            throw new Error('Required parameter billing_subscription_id was null or undefined when calling removeOrgFromBillingSubscription.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/billing_subscriptions/${encodeURIComponent(String(billing_subscription_id))}/orgs/${encodeURIComponent(String(org_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Create or update a billing account\n     * Create or update a billing account\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceBillingAccount(requestParameters: ReplaceBillingAccountRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<BillingAccount>;\n    public replaceBillingAccount(requestParameters: ReplaceBillingAccountRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<BillingAccount>>;\n    public replaceBillingAccount(requestParameters: ReplaceBillingAccountRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<BillingAccount>>;\n    public replaceBillingAccount(requestParameters: ReplaceBillingAccountRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const billing_account_id = requestParameters.billing_account_id;\n        if (billing_account_id === null || billing_account_id === undefined) {\n            throw new Error('Required parameter billing_account_id was null or undefined when calling replaceBillingAccount.');\n        }\n        const BillingAccount = requestParameters.BillingAccount;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_BillingAccount>(`${this.configuration.basePath}/v1/billing_accounts/${encodeURIComponent(String(billing_account_id))}`,\n                    BillingAccount,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _BillingAccount) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new BillingAccountImpl(response)\n            })\n        );\n    }\n\n    /**\n     * update a Feature\n     * update a Feature\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceFeature(requestParameters: ReplaceFeatureRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Feature>;\n    public replaceFeature(requestParameters: ReplaceFeatureRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Feature>>;\n    public replaceFeature(requestParameters: ReplaceFeatureRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Feature>>;\n    public replaceFeature(requestParameters: ReplaceFeatureRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const feature_id = requestParameters.feature_id;\n        if (feature_id === null || feature_id === undefined) {\n            throw new Error('Required parameter feature_id was null or undefined when calling replaceFeature.');\n        }\n        const Feature = requestParameters.Feature;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_Feature>(`${this.configuration.basePath}/v1/features/${encodeURIComponent(String(feature_id))}`,\n                    Feature,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Feature) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new FeatureImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create or update a product\n     * Create or update a product\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceProduct(requestParameters: ReplaceProductRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Product>;\n    public replaceProduct(requestParameters: ReplaceProductRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Product>>;\n    public replaceProduct(requestParameters: ReplaceProductRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Product>>;\n    public replaceProduct(requestParameters: ReplaceProductRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const product_id = requestParameters.product_id;\n        if (product_id === null || product_id === undefined) {\n            throw new Error('Required parameter product_id was null or undefined when calling replaceProduct.');\n        }\n        const Product = requestParameters.Product;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_Product>(`${this.configuration.basePath}/v1/products/${encodeURIComponent(String(product_id))}`,\n                    Product,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Product) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ProductImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create or update a billing subscription\n     * Create or update a billing subscription\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceSubscription(requestParameters: ReplaceSubscriptionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<BillingOrgSubscription>;\n    public replaceSubscription(requestParameters: ReplaceSubscriptionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<BillingOrgSubscription>>;\n    public replaceSubscription(requestParameters: ReplaceSubscriptionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<BillingOrgSubscription>>;\n    public replaceSubscription(requestParameters: ReplaceSubscriptionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const billing_subscription_id = requestParameters.billing_subscription_id;\n        if (billing_subscription_id === null || billing_subscription_id === undefined) {\n            throw new Error('Required parameter billing_subscription_id was null or undefined when calling replaceSubscription.');\n        }\n        const subscription_reconcile = requestParameters.subscription_reconcile;\n        const BillingOrgSubscription = requestParameters.BillingOrgSubscription;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (subscription_reconcile !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>subscription_reconcile, 'subscription_reconcile');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_BillingOrgSubscription>(`${this.configuration.basePath}/v1/billing_subscriptions/${encodeURIComponent(String(billing_subscription_id))}`,\n                    BillingOrgSubscription,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _BillingOrgSubscription) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new BillingOrgSubscriptionImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update the subscription cancellation detail\n     * Update the subscription cancellation detail\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public updateSubscriptionCancellation(requestParameters: UpdateSubscriptionCancellationRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<BillingOrgSubscription>;\n    public updateSubscriptionCancellation(requestParameters: UpdateSubscriptionCancellationRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<BillingOrgSubscription>>;\n    public updateSubscriptionCancellation(requestParameters: UpdateSubscriptionCancellationRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<BillingOrgSubscription>>;\n    public updateSubscriptionCancellation(requestParameters: UpdateSubscriptionCancellationRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const billing_subscription_id = requestParameters.billing_subscription_id;\n        if (billing_subscription_id === null || billing_subscription_id === undefined) {\n            throw new Error('Required parameter billing_subscription_id was null or undefined when calling updateSubscriptionCancellation.');\n        }\n        const BillingOrgSubscription = requestParameters.BillingOrgSubscription;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_BillingOrgSubscription>(`${this.configuration.basePath}/v1/billing_subscriptions/${encodeURIComponent(String(billing_subscription_id))}/cancel`,\n                    BillingOrgSubscription,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _BillingOrgSubscription) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new BillingOrgSubscriptionImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _Catalogue, Catalogue, CatalogueImpl } from '../model/models';\nimport { _CatalogueEntry, CatalogueEntry, CatalogueEntryImpl } from '../model/models';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _ListCatalogueEntriesResponse, ListCatalogueEntriesResponse, ListCatalogueEntriesResponseImpl } from '../model/models';\nimport { _ListCataloguesResponse, ListCataloguesResponse, ListCataloguesResponseImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    CataloguesServiceInterface,\n    CreateCatalogueRequestParams,\n    CreateCatalogueEntryRequestParams,\n    DeleteCatalogueRequestParams,\n    DeleteCatalogueEntryRequestParams,\n    GetCatalogueRequestParams,\n    GetCatalogueEntryRequestParams,\n    ListAllCatalogueEntriesRequestParams,\n    ListCatalogueEntriesRequestParams,\n    ListCataloguesRequestParams,\n    ReplaceCatalogueRequestParams,\n    ReplaceCatalogueEntryRequestParams\n} from './catalogues.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CataloguesService implements CataloguesServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * create a catalogue\n     * create a catalogue\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createCatalogue(requestParameters: CreateCatalogueRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Catalogue>;\n    public createCatalogue(requestParameters: CreateCatalogueRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Catalogue>>;\n    public createCatalogue(requestParameters: CreateCatalogueRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Catalogue>>;\n    public createCatalogue(requestParameters: CreateCatalogueRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const Catalogue = requestParameters.Catalogue;\n        if (Catalogue === null || Catalogue === undefined) {\n            throw new Error('Required parameter Catalogue was null or undefined when calling createCatalogue.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Catalogue>(`${this.configuration.basePath}/v1/catalogues`,\n                    Catalogue,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Catalogue) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new CatalogueImpl(response)\n            })\n        );\n    }\n\n    /**\n     * create a catalogue entry\n     * create a catalogue entry\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createCatalogueEntry(requestParameters: CreateCatalogueEntryRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<CatalogueEntry>;\n    public createCatalogueEntry(requestParameters: CreateCatalogueEntryRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<CatalogueEntry>>;\n    public createCatalogueEntry(requestParameters: CreateCatalogueEntryRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<CatalogueEntry>>;\n    public createCatalogueEntry(requestParameters: CreateCatalogueEntryRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const catalogue_id = requestParameters.catalogue_id;\n        if (catalogue_id === null || catalogue_id === undefined) {\n            throw new Error('Required parameter catalogue_id was null or undefined when calling createCatalogueEntry.');\n        }\n        const CatalogueEntry = requestParameters.CatalogueEntry;\n        if (CatalogueEntry === null || CatalogueEntry === undefined) {\n            throw new Error('Required parameter CatalogueEntry was null or undefined when calling createCatalogueEntry.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_CatalogueEntry>(`${this.configuration.basePath}/v1/catalogues/${encodeURIComponent(String(catalogue_id))}/catalogue_entries`,\n                    CatalogueEntry,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _CatalogueEntry) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new CatalogueEntryImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete the catalogue specified by catalogue_id\n     * Delete the catalogue specified by catalogue_id\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteCatalogue(requestParameters: DeleteCatalogueRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteCatalogue(requestParameters: DeleteCatalogueRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteCatalogue(requestParameters: DeleteCatalogueRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteCatalogue(requestParameters: DeleteCatalogueRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const catalogue_id = requestParameters.catalogue_id;\n        if (catalogue_id === null || catalogue_id === undefined) {\n            throw new Error('Required parameter catalogue_id was null or undefined when calling deleteCatalogue.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/catalogues/${encodeURIComponent(String(catalogue_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete the catalogue specified by catalogue_entry_id\n     * Delete the catalogue specified by catalogue_entry_id\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteCatalogueEntry(requestParameters: DeleteCatalogueEntryRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteCatalogueEntry(requestParameters: DeleteCatalogueEntryRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteCatalogueEntry(requestParameters: DeleteCatalogueEntryRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteCatalogueEntry(requestParameters: DeleteCatalogueEntryRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const catalogue_id = requestParameters.catalogue_id;\n        if (catalogue_id === null || catalogue_id === undefined) {\n            throw new Error('Required parameter catalogue_id was null or undefined when calling deleteCatalogueEntry.');\n        }\n        const catalogue_entry_id = requestParameters.catalogue_entry_id;\n        if (catalogue_entry_id === null || catalogue_entry_id === undefined) {\n            throw new Error('Required parameter catalogue_entry_id was null or undefined when calling deleteCatalogueEntry.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/catalogues/${encodeURIComponent(String(catalogue_id))}/catalogue_entries/${encodeURIComponent(String(catalogue_entry_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get the catalogue specified by catalogue_id\n     * Get the catalogue specified by catalogue_id\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getCatalogue(requestParameters: GetCatalogueRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Catalogue>;\n    public getCatalogue(requestParameters: GetCatalogueRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Catalogue>>;\n    public getCatalogue(requestParameters: GetCatalogueRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Catalogue>>;\n    public getCatalogue(requestParameters: GetCatalogueRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const catalogue_id = requestParameters.catalogue_id;\n        if (catalogue_id === null || catalogue_id === undefined) {\n            throw new Error('Required parameter catalogue_id was null or undefined when calling getCatalogue.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Catalogue>(`${this.configuration.basePath}/v1/catalogues/${encodeURIComponent(String(catalogue_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Catalogue) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new CatalogueImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get the catalogue entry by id for the given catalogue\n     * Get the catalogue entry by id for the given catalogue\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getCatalogueEntry(requestParameters: GetCatalogueEntryRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<CatalogueEntry>;\n    public getCatalogueEntry(requestParameters: GetCatalogueEntryRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<CatalogueEntry>>;\n    public getCatalogueEntry(requestParameters: GetCatalogueEntryRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<CatalogueEntry>>;\n    public getCatalogueEntry(requestParameters: GetCatalogueEntryRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const catalogue_id = requestParameters.catalogue_id;\n        if (catalogue_id === null || catalogue_id === undefined) {\n            throw new Error('Required parameter catalogue_id was null or undefined when calling getCatalogueEntry.');\n        }\n        const catalogue_entry_id = requestParameters.catalogue_entry_id;\n        if (catalogue_entry_id === null || catalogue_entry_id === undefined) {\n            throw new Error('Required parameter catalogue_entry_id was null or undefined when calling getCatalogueEntry.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_CatalogueEntry>(`${this.configuration.basePath}/v1/catalogues/${encodeURIComponent(String(catalogue_id))}/catalogue_entries/${encodeURIComponent(String(catalogue_entry_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _CatalogueEntry) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new CatalogueEntryImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all catalogue entries independant of the catalogue they belong to\n     * List all catalogue entries independant of the catalogue they belong to\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listAllCatalogueEntries(requestParameters: ListAllCatalogueEntriesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListCatalogueEntriesResponse>;\n    public listAllCatalogueEntries(requestParameters: ListAllCatalogueEntriesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListCatalogueEntriesResponse>>;\n    public listAllCatalogueEntries(requestParameters: ListAllCatalogueEntriesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListCatalogueEntriesResponse>>;\n    public listAllCatalogueEntries(requestParameters: ListAllCatalogueEntriesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const catalogue_entry_name = requestParameters.catalogue_entry_name;\n        const catalogue_category = requestParameters.catalogue_category;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (catalogue_entry_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>catalogue_entry_name, 'catalogue_entry_name');\n        }\n        if (catalogue_category !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>catalogue_category, 'catalogue_category');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListCatalogueEntriesResponse>(`${this.configuration.basePath}/v1/catalogue_entries`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListCatalogueEntriesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListCatalogueEntriesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List catalogue entries in the catalogue\n     * List catalogue entries in the catalogue\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listCatalogueEntries(requestParameters: ListCatalogueEntriesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListCatalogueEntriesResponse>;\n    public listCatalogueEntries(requestParameters: ListCatalogueEntriesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListCatalogueEntriesResponse>>;\n    public listCatalogueEntries(requestParameters: ListCatalogueEntriesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListCatalogueEntriesResponse>>;\n    public listCatalogueEntries(requestParameters: ListCatalogueEntriesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const catalogue_id = requestParameters.catalogue_id;\n        if (catalogue_id === null || catalogue_id === undefined) {\n            throw new Error('Required parameter catalogue_id was null or undefined when calling listCatalogueEntries.');\n        }\n        const limit = requestParameters.limit;\n        const catalogue_entry_name = requestParameters.catalogue_entry_name;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (catalogue_entry_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>catalogue_entry_name, 'catalogue_entry_name');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListCatalogueEntriesResponse>(`${this.configuration.basePath}/v1/catalogues/${encodeURIComponent(String(catalogue_id))}/catalogue_entries`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListCatalogueEntriesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListCatalogueEntriesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all catalogues\n     * List all catalogues\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listCatalogues(requestParameters: ListCataloguesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListCataloguesResponse>;\n    public listCatalogues(requestParameters: ListCataloguesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListCataloguesResponse>>;\n    public listCatalogues(requestParameters: ListCataloguesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListCataloguesResponse>>;\n    public listCatalogues(requestParameters: ListCataloguesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const catalogue_category = requestParameters.catalogue_category;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (catalogue_category !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>catalogue_category, 'catalogue_category');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListCataloguesResponse>(`${this.configuration.basePath}/v1/catalogues`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListCataloguesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListCataloguesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Replace the catalogue specified by catalogue_id\n     * Replace the catalogue specified by catalogue_id\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceCatalogue(requestParameters: ReplaceCatalogueRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Catalogue>;\n    public replaceCatalogue(requestParameters: ReplaceCatalogueRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Catalogue>>;\n    public replaceCatalogue(requestParameters: ReplaceCatalogueRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Catalogue>>;\n    public replaceCatalogue(requestParameters: ReplaceCatalogueRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const catalogue_id = requestParameters.catalogue_id;\n        if (catalogue_id === null || catalogue_id === undefined) {\n            throw new Error('Required parameter catalogue_id was null or undefined when calling replaceCatalogue.');\n        }\n        const Catalogue = requestParameters.Catalogue;\n        if (Catalogue === null || Catalogue === undefined) {\n            throw new Error('Required parameter Catalogue was null or undefined when calling replaceCatalogue.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_Catalogue>(`${this.configuration.basePath}/v1/catalogues/${encodeURIComponent(String(catalogue_id))}`,\n                    Catalogue,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Catalogue) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new CatalogueImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Replace the catalogue entry specified by catalogue_entry_id\n     * Replace the catalogue entry specified by catalogue_entry_id\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceCatalogueEntry(requestParameters: ReplaceCatalogueEntryRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<CatalogueEntry>;\n    public replaceCatalogueEntry(requestParameters: ReplaceCatalogueEntryRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<CatalogueEntry>>;\n    public replaceCatalogueEntry(requestParameters: ReplaceCatalogueEntryRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<CatalogueEntry>>;\n    public replaceCatalogueEntry(requestParameters: ReplaceCatalogueEntryRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const catalogue_id = requestParameters.catalogue_id;\n        if (catalogue_id === null || catalogue_id === undefined) {\n            throw new Error('Required parameter catalogue_id was null or undefined when calling replaceCatalogueEntry.');\n        }\n        const catalogue_entry_id = requestParameters.catalogue_entry_id;\n        if (catalogue_entry_id === null || catalogue_entry_id === undefined) {\n            throw new Error('Required parameter catalogue_entry_id was null or undefined when calling replaceCatalogueEntry.');\n        }\n        const CatalogueEntry = requestParameters.CatalogueEntry;\n        if (CatalogueEntry === null || CatalogueEntry === undefined) {\n            throw new Error('Required parameter CatalogueEntry was null or undefined when calling replaceCatalogueEntry.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_CatalogueEntry>(`${this.configuration.basePath}/v1/catalogues/${encodeURIComponent(String(catalogue_id))}/catalogue_entries/${encodeURIComponent(String(catalogue_entry_id))}`,\n                    CatalogueEntry,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _CatalogueEntry) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new CatalogueEntryImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _CSRReasonEnum, CSRReasonEnum, CSRReasonEnumImpl } from '../model/models';\nimport { _CertSigningReq, CertSigningReq, CertSigningReqImpl } from '../model/models';\nimport { _CertSigningReqReissue, CertSigningReqReissue, CertSigningReqReissueImpl } from '../model/models';\nimport { _CertificateTracker, CertificateTracker, CertificateTrackerImpl } from '../model/models';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _InlineResponse200, InlineResponse200, InlineResponse200Impl } from '../model/models';\nimport { _ListCertSigningReqResponse, ListCertSigningReqResponse, ListCertSigningReqResponseImpl } from '../model/models';\nimport { _ListCertificateTrackerResponse, ListCertificateTrackerResponse, ListCertificateTrackerResponseImpl } from '../model/models';\nimport { _ListX509CertificateResponse, ListX509CertificateResponse, ListX509CertificateResponseImpl } from '../model/models';\nimport { _X509Certificate, X509Certificate, X509CertificateImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    CertificatesServiceInterface,\n    CreateCertRequestParams,\n    CreateCertTrackerRequestParams,\n    CreateCertTrackerCertRequestParams,\n    DeleteAgentCsrRequestParams,\n    DeleteCertRequestParams,\n    DeleteCertTrackerRequestParams,\n    DeleteCsrRequestParams,\n    GetCertRequestParams,\n    GetCertTrackerRequestParams,\n    GetCsrRequestParams,\n    ListCertTrackersRequestParams,\n    ListCertsRequestParams,\n    ListCsrRequestParams,\n    ListRootCertsRequestParams,\n    ReissueCertForCsrRequestParams,\n    ReplaceCertTrackerRequestParams,\n    ReplaceCsrRequestParams\n} from './certificates.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CertificatesService implements CertificatesServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Creates a X509Certificate\n     * Creates a X509Certificate \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createCert(requestParameters: CreateCertRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<X509Certificate>;\n    public createCert(requestParameters: CreateCertRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<X509Certificate>>;\n    public createCert(requestParameters: CreateCertRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<X509Certificate>>;\n    public createCert(requestParameters: CreateCertRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const X509Certificate = requestParameters.X509Certificate;\n        if (X509Certificate === null || X509Certificate === undefined) {\n            throw new Error('Required parameter X509Certificate was null or undefined when calling createCert.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_X509Certificate>(`${this.configuration.basePath}/v1/certificates`,\n                    X509Certificate,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _X509Certificate) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new X509CertificateImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Creates a CertificateTracker\n     * Creates a CertificateTracker \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createCertTracker(requestParameters: CreateCertTrackerRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<CertificateTracker>;\n    public createCertTracker(requestParameters: CreateCertTrackerRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<CertificateTracker>>;\n    public createCertTracker(requestParameters: CreateCertTrackerRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<CertificateTracker>>;\n    public createCertTracker(requestParameters: CreateCertTrackerRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const CertificateTracker = requestParameters.CertificateTracker;\n        if (CertificateTracker === null || CertificateTracker === undefined) {\n            throw new Error('Required parameter CertificateTracker was null or undefined when calling createCertTracker.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_CertificateTracker>(`${this.configuration.basePath}/v1/certificate_trackers`,\n                    CertificateTracker,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _CertificateTracker) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new CertificateTrackerImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Creates a X509Certificate associated to a CertificateTracker\n     * Creates a X509Certificate associated to a CertificateTracker \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createCertTrackerCert(requestParameters: CreateCertTrackerCertRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<X509Certificate>;\n    public createCertTrackerCert(requestParameters: CreateCertTrackerCertRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<X509Certificate>>;\n    public createCertTrackerCert(requestParameters: CreateCertTrackerCertRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<X509Certificate>>;\n    public createCertTrackerCert(requestParameters: CreateCertTrackerCertRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const certificate_tracker_id = requestParameters.certificate_tracker_id;\n        if (certificate_tracker_id === null || certificate_tracker_id === undefined) {\n            throw new Error('Required parameter certificate_tracker_id was null or undefined when calling createCertTrackerCert.');\n        }\n        const X509Certificate = requestParameters.X509Certificate;\n        if (X509Certificate === null || X509Certificate === undefined) {\n            throw new Error('Required parameter X509Certificate was null or undefined when calling createCertTrackerCert.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_X509Certificate>(`${this.configuration.basePath}/v1/certificate_trackers/${encodeURIComponent(String(certificate_tracker_id))}/certificates`,\n                    X509Certificate,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _X509Certificate) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new X509CertificateImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a CertSigningReq\n     * Delete a CertSigningReq\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteAgentCsr(requestParameters: DeleteAgentCsrRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteAgentCsr(requestParameters: DeleteAgentCsrRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteAgentCsr(requestParameters: DeleteAgentCsrRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteAgentCsr(requestParameters: DeleteAgentCsrRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling deleteAgentCsr.');\n        }\n        const csr_id = requestParameters.csr_id;\n        if (csr_id === null || csr_id === undefined) {\n            throw new Error('Required parameter csr_id was null or undefined when calling deleteAgentCsr.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}/certificate_signing_requests/${encodeURIComponent(String(csr_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a X509Certificate\n     * Delete a X509Certificate\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteCert(requestParameters: DeleteCertRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteCert(requestParameters: DeleteCertRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteCert(requestParameters: DeleteCertRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteCert(requestParameters: DeleteCertRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const certificate_id = requestParameters.certificate_id;\n        if (certificate_id === null || certificate_id === undefined) {\n            throw new Error('Required parameter certificate_id was null or undefined when calling deleteCert.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/certificates/${encodeURIComponent(String(certificate_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a CertificateTracker\n     * Delete a CertificateTracker\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteCertTracker(requestParameters: DeleteCertTrackerRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteCertTracker(requestParameters: DeleteCertTrackerRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteCertTracker(requestParameters: DeleteCertTrackerRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteCertTracker(requestParameters: DeleteCertTrackerRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const certificate_tracker_id = requestParameters.certificate_tracker_id;\n        if (certificate_tracker_id === null || certificate_tracker_id === undefined) {\n            throw new Error('Required parameter certificate_tracker_id was null or undefined when calling deleteCertTracker.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/certificate_trackers/${encodeURIComponent(String(certificate_tracker_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a CertSigningReq\n     * Delete a CertSigningReq\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteCsr(requestParameters: DeleteCsrRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteCsr(requestParameters: DeleteCsrRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteCsr(requestParameters: DeleteCsrRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteCsr(requestParameters: DeleteCsrRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const csr_id = requestParameters.csr_id;\n        if (csr_id === null || csr_id === undefined) {\n            throw new Error('Required parameter csr_id was null or undefined when calling deleteCsr.');\n        }\n        const org_id = requestParameters.org_id;\n        const private_key_id = requestParameters.private_key_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (private_key_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>private_key_id, 'private_key_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/certificate_signing_requests/${encodeURIComponent(String(csr_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get a X509Certificate\n     * Get a X509Certificate\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getCert(requestParameters: GetCertRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<X509Certificate>;\n    public getCert(requestParameters: GetCertRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<X509Certificate>>;\n    public getCert(requestParameters: GetCertRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<X509Certificate>>;\n    public getCert(requestParameters: GetCertRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const certificate_id = requestParameters.certificate_id;\n        if (certificate_id === null || certificate_id === undefined) {\n            throw new Error('Required parameter certificate_id was null or undefined when calling getCert.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_X509Certificate>(`${this.configuration.basePath}/v1/certificates/${encodeURIComponent(String(certificate_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _X509Certificate) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new X509CertificateImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a CertificateTracker\n     * Get a CertificateTracker\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getCertTracker(requestParameters: GetCertTrackerRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<CertificateTracker>;\n    public getCertTracker(requestParameters: GetCertTrackerRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<CertificateTracker>>;\n    public getCertTracker(requestParameters: GetCertTrackerRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<CertificateTracker>>;\n    public getCertTracker(requestParameters: GetCertTrackerRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const certificate_tracker_id = requestParameters.certificate_tracker_id;\n        if (certificate_tracker_id === null || certificate_tracker_id === undefined) {\n            throw new Error('Required parameter certificate_tracker_id was null or undefined when calling getCertTracker.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_CertificateTracker>(`${this.configuration.basePath}/v1/certificate_trackers/${encodeURIComponent(String(certificate_tracker_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _CertificateTracker) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new CertificateTrackerImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a CertSigningReq\n     * Get a CertSigningReq\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getCsr(requestParameters: GetCsrRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<CertSigningReq>;\n    public getCsr(requestParameters: GetCsrRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<CertSigningReq>>;\n    public getCsr(requestParameters: GetCsrRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<CertSigningReq>>;\n    public getCsr(requestParameters: GetCsrRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const csr_id = requestParameters.csr_id;\n        if (csr_id === null || csr_id === undefined) {\n            throw new Error('Required parameter csr_id was null or undefined when calling getCsr.');\n        }\n        const org_id = requestParameters.org_id;\n        const private_key_id = requestParameters.private_key_id;\n        const limit_csr_certificates = requestParameters.limit_csr_certificates;\n        const get_certificate_updates = requestParameters.get_certificate_updates;\n        const certificate_updates_start_cursor = requestParameters.certificate_updates_start_cursor;\n        const certificate_updates_end_cursor = requestParameters.certificate_updates_end_cursor;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (private_key_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>private_key_id, 'private_key_id');\n        }\n        if (limit_csr_certificates !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit_csr_certificates, 'limit_csr_certificates');\n        }\n        if (get_certificate_updates !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_certificate_updates, 'get_certificate_updates');\n        }\n        if (certificate_updates_start_cursor !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>certificate_updates_start_cursor, 'certificate_updates_start_cursor');\n        }\n        if (certificate_updates_end_cursor !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>certificate_updates_end_cursor, 'certificate_updates_end_cursor');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_CertSigningReq>(`${this.configuration.basePath}/v1/certificate_signing_requests/${encodeURIComponent(String(csr_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _CertSigningReq) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new CertSigningReqImpl(response)\n            })\n        );\n    }\n\n    /**\n     * list certificate trackers\n     * List certificate trackers \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listCertTrackers(requestParameters: ListCertTrackersRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListCertificateTrackerResponse>;\n    public listCertTrackers(requestParameters: ListCertTrackersRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListCertificateTrackerResponse>>;\n    public listCertTrackers(requestParameters: ListCertTrackersRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListCertificateTrackerResponse>>;\n    public listCertTrackers(requestParameters: ListCertTrackersRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const page_at_id = requestParameters.page_at_id;\n        const org_ids = requestParameters.org_ids;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (org_ids) {\n            org_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'org_ids');\n            })\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListCertificateTrackerResponse>(`${this.configuration.basePath}/v1/certificate_trackers`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListCertificateTrackerResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListCertificateTrackerResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * list certificates\n     * List certificates \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listCerts(requestParameters: ListCertsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListX509CertificateResponse>;\n    public listCerts(requestParameters: ListCertsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListX509CertificateResponse>>;\n    public listCerts(requestParameters: ListCertsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListX509CertificateResponse>>;\n    public listCerts(requestParameters: ListCertsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListX509CertificateResponse>(`${this.configuration.basePath}/v1/certificates`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListX509CertificateResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListX509CertificateResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * list certificate signing requests\n     * List certificate signing requests. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listCsr(requestParameters: ListCsrRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListCertSigningReqResponse>;\n    public listCsr(requestParameters: ListCsrRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListCertSigningReqResponse>>;\n    public listCsr(requestParameters: ListCsrRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListCertSigningReqResponse>>;\n    public listCsr(requestParameters: ListCsrRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const reason = requestParameters.reason;\n        const not_valid_after = requestParameters.not_valid_after;\n        const target_issuer = requestParameters.target_issuer;\n        const limit_csr_certificates = requestParameters.limit_csr_certificates;\n        const get_certificate_updates = requestParameters.get_certificate_updates;\n        const certificate_updates_start_cursor = requestParameters.certificate_updates_start_cursor;\n        const certificate_updates_end_cursor = requestParameters.certificate_updates_end_cursor;\n        const auto_renew = requestParameters.auto_renew;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (reason !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>reason, 'reason');\n        }\n        if (not_valid_after !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>not_valid_after, 'not_valid_after');\n        }\n        if (target_issuer) {\n            target_issuer.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'target_issuer');\n            })\n        }\n        if (limit_csr_certificates !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit_csr_certificates, 'limit_csr_certificates');\n        }\n        if (get_certificate_updates !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_certificate_updates, 'get_certificate_updates');\n        }\n        if (certificate_updates_start_cursor !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>certificate_updates_start_cursor, 'certificate_updates_start_cursor');\n        }\n        if (certificate_updates_end_cursor !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>certificate_updates_end_cursor, 'certificate_updates_end_cursor');\n        }\n        if (auto_renew !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>auto_renew, 'auto_renew');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListCertSigningReqResponse>(`${this.configuration.basePath}/v1/certificate_signing_requests`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListCertSigningReqResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListCertSigningReqResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * list root certificates\n     * List the root certificates an organsation should trust when interacting with the local resources exposed by the Agilicus platform. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listRootCerts(requestParameters: ListRootCertsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<InlineResponse200>;\n    public listRootCerts(requestParameters: ListRootCertsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<InlineResponse200>>;\n    public listRootCerts(requestParameters: ListRootCertsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<InlineResponse200>>;\n    public listRootCerts(requestParameters: ListRootCertsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_InlineResponse200>(`${this.configuration.basePath}/v1/root_certificates`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _InlineResponse200) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new InlineResponse200Impl(response)\n            })\n        );\n    }\n\n    /**\n     * Creates a CertSigningRequestReissue\n     * Creates a CertSigningReqReissue. This procedure uses the old_not_after_time to ensure that only one certificate request can be created in a given time period. Clients can coordinate to limit the number of issued certificates by setting the old_not_after_time to the not_after_time of the most recently issued certificate. CConcurrent requests to reissue based off the same certificate will lead to only one certificate being created. This will fail if the old_not_after_time is equal to the recently used old_not_after_time as part of that coordination. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public reissueCertForCsr(requestParameters: ReissueCertForCsrRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<CertSigningReqReissue>;\n    public reissueCertForCsr(requestParameters: ReissueCertForCsrRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<CertSigningReqReissue>>;\n    public reissueCertForCsr(requestParameters: ReissueCertForCsrRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<CertSigningReqReissue>>;\n    public reissueCertForCsr(requestParameters: ReissueCertForCsrRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const CertSigningReqReissue = requestParameters.CertSigningReqReissue;\n        if (CertSigningReqReissue === null || CertSigningReqReissue === undefined) {\n            throw new Error('Required parameter CertSigningReqReissue was null or undefined when calling reissueCertForCsr.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_CertSigningReqReissue>(`${this.configuration.basePath}/v1/certificate_signing_requests/reissue`,\n                    CertSigningReqReissue,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _CertSigningReqReissue) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new CertSigningReqReissueImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a CertificateTracker\n     * Update a CertificateTracker\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceCertTracker(requestParameters: ReplaceCertTrackerRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<CertificateTracker>;\n    public replaceCertTracker(requestParameters: ReplaceCertTrackerRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<CertificateTracker>>;\n    public replaceCertTracker(requestParameters: ReplaceCertTrackerRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<CertificateTracker>>;\n    public replaceCertTracker(requestParameters: ReplaceCertTrackerRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const certificate_tracker_id = requestParameters.certificate_tracker_id;\n        if (certificate_tracker_id === null || certificate_tracker_id === undefined) {\n            throw new Error('Required parameter certificate_tracker_id was null or undefined when calling replaceCertTracker.');\n        }\n        const CertificateTracker = requestParameters.CertificateTracker;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_CertificateTracker>(`${this.configuration.basePath}/v1/certificate_trackers/${encodeURIComponent(String(certificate_tracker_id))}`,\n                    CertificateTracker,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _CertificateTracker) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new CertificateTrackerImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a CertSigningReq\n     * Update a CertSigningReq\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceCsr(requestParameters: ReplaceCsrRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<CertSigningReq>;\n    public replaceCsr(requestParameters: ReplaceCsrRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<CertSigningReq>>;\n    public replaceCsr(requestParameters: ReplaceCsrRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<CertSigningReq>>;\n    public replaceCsr(requestParameters: ReplaceCsrRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const csr_id = requestParameters.csr_id;\n        if (csr_id === null || csr_id === undefined) {\n            throw new Error('Required parameter csr_id was null or undefined when calling replaceCsr.');\n        }\n        const org_id = requestParameters.org_id;\n        const private_key_id = requestParameters.private_key_id;\n        const CertSigningReq = requestParameters.CertSigningReq;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (private_key_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>private_key_id, 'private_key_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_CertSigningReq>(`${this.configuration.basePath}/v1/certificate_signing_requests/${encodeURIComponent(String(csr_id))}`,\n                    CertSigningReq,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _CertSigningReq) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new CertSigningReqImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _Challenge, Challenge, ChallengeImpl } from '../model/models';\nimport { _ChallengeAnswer, ChallengeAnswer, ChallengeAnswerImpl } from '../model/models';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _ListTOTPEnrollmentResponse, ListTOTPEnrollmentResponse, ListTOTPEnrollmentResponseImpl } from '../model/models';\nimport { _ListWebAuthNEnrollmentResponse, ListWebAuthNEnrollmentResponse, ListWebAuthNEnrollmentResponseImpl } from '../model/models';\nimport { _OneTimeUseActionChallenge, OneTimeUseActionChallenge, OneTimeUseActionChallengeImpl } from '../model/models';\nimport { _OneTimeUseActionChallengeResponse, OneTimeUseActionChallengeResponse, OneTimeUseActionChallengeResponseImpl } from '../model/models';\nimport { _TOTPEnrollment, TOTPEnrollment, TOTPEnrollmentImpl } from '../model/models';\nimport { _TOTPEnrollmentAnswer, TOTPEnrollmentAnswer, TOTPEnrollmentAnswerImpl } from '../model/models';\nimport { _WebAuthNEnrollment, WebAuthNEnrollment, WebAuthNEnrollmentImpl } from '../model/models';\nimport { _WebAuthNEnrollmentAnswer, WebAuthNEnrollmentAnswer, WebAuthNEnrollmentAnswerImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    ChallengesServiceInterface,\n    CreateChallengeRequestParams,\n    CreateOneTimeUseActionRequestParams,\n    CreateTotpEnrollmentRequestParams,\n    CreateWebauthnEnrollmentRequestParams,\n    DeleteChallengeRequestParams,\n    DeleteTotpEnrollmentRequestParams,\n    DeleteWebauthnEnrollmentRequestParams,\n    GetAnswerRequestParams,\n    GetChallengeRequestParams,\n    GetTotpEnrollmentRequestParams,\n    GetWebauthnEnrollmentRequestParams,\n    ListTotpEnrollmentRequestParams,\n    ListWebauthnEnrollmentsRequestParams,\n    ReplaceChallengeRequestParams,\n    UpdateTotpEnrollmentRequestParams,\n    UpdateWebauthnEnrollmentRequestParams\n} from './challenges.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ChallengesService implements ChallengesServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * create a challenge\n     * Creates a challenge according to the provide specification. This challenge will persist for a period of time waiting for the challenge to be passed. It will eventually time out. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createChallenge(requestParameters: CreateChallengeRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Challenge>;\n    public createChallenge(requestParameters: CreateChallengeRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Challenge>>;\n    public createChallenge(requestParameters: CreateChallengeRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Challenge>>;\n    public createChallenge(requestParameters: CreateChallengeRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const Challenge = requestParameters.Challenge;\n        if (Challenge === null || Challenge === undefined) {\n            throw new Error('Required parameter Challenge was null or undefined when calling createChallenge.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Challenge>(`${this.configuration.basePath}/v1/challenges`,\n                    Challenge,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Challenge) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ChallengeImpl(response)\n            })\n        );\n    }\n\n    /**\n     * create a one time use action challenge\n     * Creates a one time use challenge according to the provide specification. This challenge will persist for a period of time waiting for the challenge to be passed. It will eventually time out. If the challenge is accepted or declined, the system will perform an action according to the configuration provided on challenge creation and the provided answer. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createOneTimeUseAction(requestParameters: CreateOneTimeUseActionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<OneTimeUseActionChallengeResponse>;\n    public createOneTimeUseAction(requestParameters: CreateOneTimeUseActionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<OneTimeUseActionChallengeResponse>>;\n    public createOneTimeUseAction(requestParameters: CreateOneTimeUseActionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<OneTimeUseActionChallengeResponse>>;\n    public createOneTimeUseAction(requestParameters: CreateOneTimeUseActionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const OneTimeUseActionChallenge = requestParameters.OneTimeUseActionChallenge;\n        if (OneTimeUseActionChallenge === null || OneTimeUseActionChallenge === undefined) {\n            throw new Error('Required parameter OneTimeUseActionChallenge was null or undefined when calling createOneTimeUseAction.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_OneTimeUseActionChallengeResponse>(`${this.configuration.basePath}/v1/challenges/one_time_use_actions`,\n                    OneTimeUseActionChallenge,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _OneTimeUseActionChallengeResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new OneTimeUseActionChallengeResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * create a TOTP challenge enrollment\n     * Creates a TOTP challenge enrollment. The returned body will contain the key the user needs to enroll in their application. The enrollment is not complete until the user provides a valid answer. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createTotpEnrollment(requestParameters: CreateTotpEnrollmentRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<TOTPEnrollment>;\n    public createTotpEnrollment(requestParameters: CreateTotpEnrollmentRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<TOTPEnrollment>>;\n    public createTotpEnrollment(requestParameters: CreateTotpEnrollmentRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<TOTPEnrollment>>;\n    public createTotpEnrollment(requestParameters: CreateTotpEnrollmentRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const TOTPEnrollment = requestParameters.TOTPEnrollment;\n        if (TOTPEnrollment === null || TOTPEnrollment === undefined) {\n            throw new Error('Required parameter TOTPEnrollment was null or undefined when calling createTotpEnrollment.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_TOTPEnrollment>(`${this.configuration.basePath}/v1/challenge_enrollment/totp`,\n                    TOTPEnrollment,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _TOTPEnrollment) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new TOTPEnrollmentImpl(response)\n            })\n        );\n    }\n\n    /**\n     * create a WebAuthN challenge enrollment\n     * Initiates a WebAuthN challenge enrollment. The enrollment is not complete until the user provides a valid answer. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createWebauthnEnrollment(requestParameters: CreateWebauthnEnrollmentRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<WebAuthNEnrollment>;\n    public createWebauthnEnrollment(requestParameters: CreateWebauthnEnrollmentRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<WebAuthNEnrollment>>;\n    public createWebauthnEnrollment(requestParameters: CreateWebauthnEnrollmentRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<WebAuthNEnrollment>>;\n    public createWebauthnEnrollment(requestParameters: CreateWebauthnEnrollmentRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const WebAuthNEnrollment = requestParameters.WebAuthNEnrollment;\n        if (WebAuthNEnrollment === null || WebAuthNEnrollment === undefined) {\n            throw new Error('Required parameter WebAuthNEnrollment was null or undefined when calling createWebauthnEnrollment.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_WebAuthNEnrollment>(`${this.configuration.basePath}/v1/challenge_enrollment/webauthn`,\n                    WebAuthNEnrollment,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _WebAuthNEnrollment) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new WebAuthNEnrollmentImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete the challenge specified by challenge_id\n     * Delete the challenge specified by challenge_id\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteChallenge(requestParameters: DeleteChallengeRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteChallenge(requestParameters: DeleteChallengeRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteChallenge(requestParameters: DeleteChallengeRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteChallenge(requestParameters: DeleteChallengeRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const challenge_id = requestParameters.challenge_id;\n        if (challenge_id === null || challenge_id === undefined) {\n            throw new Error('Required parameter challenge_id was null or undefined when calling deleteChallenge.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n        return of(undefined).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/challenges/${encodeURIComponent(String(challenge_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete the TOTP enrollment specified by totp id\n     * Delete the TOTP enrollment specified by totp id\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteTotpEnrollment(requestParameters: DeleteTotpEnrollmentRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteTotpEnrollment(requestParameters: DeleteTotpEnrollmentRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteTotpEnrollment(requestParameters: DeleteTotpEnrollmentRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteTotpEnrollment(requestParameters: DeleteTotpEnrollmentRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const totp_id = requestParameters.totp_id;\n        if (totp_id === null || totp_id === undefined) {\n            throw new Error('Required parameter totp_id was null or undefined when calling deleteTotpEnrollment.');\n        }\n        const user_id = requestParameters.user_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/challenge_enrollment/totp/${encodeURIComponent(String(totp_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete the WebAuthN enrollment specified by webauthn_id\n     * Delete the WebAuthN enrollment specified by webauthn_id\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteWebauthnEnrollment(requestParameters: DeleteWebauthnEnrollmentRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteWebauthnEnrollment(requestParameters: DeleteWebauthnEnrollmentRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteWebauthnEnrollment(requestParameters: DeleteWebauthnEnrollmentRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteWebauthnEnrollment(requestParameters: DeleteWebauthnEnrollmentRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const webauthn_id = requestParameters.webauthn_id;\n        if (webauthn_id === null || webauthn_id === undefined) {\n            throw new Error('Required parameter webauthn_id was null or undefined when calling deleteWebauthnEnrollment.');\n        }\n        const user_id = requestParameters.user_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/challenge_enrollment/webauthn/${encodeURIComponent(String(webauthn_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * answer a challenge\n     * Checks whether the challenge answer is correct. If the challenge is not accepting answers, or the anwer is incorrect, a failure will be returned. Otherwise, the challenge will be considered answered and the user can log in. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getAnswer(requestParameters: GetAnswerRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ChallengeAnswer>;\n    public getAnswer(requestParameters: GetAnswerRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ChallengeAnswer>>;\n    public getAnswer(requestParameters: GetAnswerRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ChallengeAnswer>>;\n    public getAnswer(requestParameters: GetAnswerRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const challenge_id = requestParameters.challenge_id;\n        if (challenge_id === null || challenge_id === undefined) {\n            throw new Error('Required parameter challenge_id was null or undefined when calling getAnswer.');\n        }\n        const challenge_answer = requestParameters.challenge_answer;\n        if (challenge_answer === null || challenge_answer === undefined) {\n            throw new Error('Required parameter challenge_answer was null or undefined when calling getAnswer.');\n        }\n        const allowed = requestParameters.allowed;\n        if (allowed === null || allowed === undefined) {\n            throw new Error('Required parameter allowed was null or undefined when calling getAnswer.');\n        }\n        const challenge_type = requestParameters.challenge_type;\n        if (challenge_type === null || challenge_type === undefined) {\n            throw new Error('Required parameter challenge_type was null or undefined when calling getAnswer.');\n        }\n        const challenge_uid = requestParameters.challenge_uid;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (challenge_answer !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>challenge_answer, 'challenge_answer');\n        }\n        if (challenge_uid !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>challenge_uid, 'challenge_uid');\n        }\n        if (allowed !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>allowed, 'allowed');\n        }\n        if (challenge_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>challenge_type, 'challenge_type');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n        return of(undefined).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ChallengeAnswer>(`${this.configuration.basePath}/v1/challenges/${encodeURIComponent(String(challenge_id))}/answers`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ChallengeAnswer) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ChallengeAnswerImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get the challenge specified by challenge_id\n     * Get the challenge specified by challenge_id\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getChallenge(requestParameters: GetChallengeRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Challenge>;\n    public getChallenge(requestParameters: GetChallengeRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Challenge>>;\n    public getChallenge(requestParameters: GetChallengeRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Challenge>>;\n    public getChallenge(requestParameters: GetChallengeRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const challenge_id = requestParameters.challenge_id;\n        if (challenge_id === null || challenge_id === undefined) {\n            throw new Error('Required parameter challenge_id was null or undefined when calling getChallenge.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n        return of(undefined).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Challenge>(`${this.configuration.basePath}/v1/challenges/${encodeURIComponent(String(challenge_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Challenge) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ChallengeImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get the TOTP enrollment specified by totp_id\n     * Get the TOTP enrollment specified by totp_id\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getTotpEnrollment(requestParameters: GetTotpEnrollmentRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<TOTPEnrollment>;\n    public getTotpEnrollment(requestParameters: GetTotpEnrollmentRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<TOTPEnrollment>>;\n    public getTotpEnrollment(requestParameters: GetTotpEnrollmentRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<TOTPEnrollment>>;\n    public getTotpEnrollment(requestParameters: GetTotpEnrollmentRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const totp_id = requestParameters.totp_id;\n        if (totp_id === null || totp_id === undefined) {\n            throw new Error('Required parameter totp_id was null or undefined when calling getTotpEnrollment.');\n        }\n        const user_id = requestParameters.user_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_TOTPEnrollment>(`${this.configuration.basePath}/v1/challenge_enrollment/totp/${encodeURIComponent(String(totp_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _TOTPEnrollment) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new TOTPEnrollmentImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get the WebAuthN enrollment specified by webauthn_id\n     * Get the WebAuthN enrollment specified by webauthn_id\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getWebauthnEnrollment(requestParameters: GetWebauthnEnrollmentRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<WebAuthNEnrollment>;\n    public getWebauthnEnrollment(requestParameters: GetWebauthnEnrollmentRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<WebAuthNEnrollment>>;\n    public getWebauthnEnrollment(requestParameters: GetWebauthnEnrollmentRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<WebAuthNEnrollment>>;\n    public getWebauthnEnrollment(requestParameters: GetWebauthnEnrollmentRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const webauthn_id = requestParameters.webauthn_id;\n        if (webauthn_id === null || webauthn_id === undefined) {\n            throw new Error('Required parameter webauthn_id was null or undefined when calling getWebauthnEnrollment.');\n        }\n        const user_id = requestParameters.user_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_WebAuthNEnrollment>(`${this.configuration.basePath}/v1/challenge_enrollment/webauthn/${encodeURIComponent(String(webauthn_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _WebAuthNEnrollment) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new WebAuthNEnrollmentImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List the totp enrollment results\n     * List the totp enrollment results\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listTotpEnrollment(requestParameters: ListTotpEnrollmentRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListTOTPEnrollmentResponse>;\n    public listTotpEnrollment(requestParameters: ListTotpEnrollmentRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListTOTPEnrollmentResponse>>;\n    public listTotpEnrollment(requestParameters: ListTotpEnrollmentRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListTOTPEnrollmentResponse>>;\n    public listTotpEnrollment(requestParameters: ListTotpEnrollmentRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const user_id = requestParameters.user_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListTOTPEnrollmentResponse>(`${this.configuration.basePath}/v1/challenge_enrollment/totp`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListTOTPEnrollmentResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListTOTPEnrollmentResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List the webauthn enrollments\n     * List the webauthn enrollments\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listWebauthnEnrollments(requestParameters: ListWebauthnEnrollmentsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListWebAuthNEnrollmentResponse>;\n    public listWebauthnEnrollments(requestParameters: ListWebauthnEnrollmentsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListWebAuthNEnrollmentResponse>>;\n    public listWebauthnEnrollments(requestParameters: ListWebauthnEnrollmentsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListWebAuthNEnrollmentResponse>>;\n    public listWebauthnEnrollments(requestParameters: ListWebauthnEnrollmentsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const user_id = requestParameters.user_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListWebAuthNEnrollmentResponse>(`${this.configuration.basePath}/v1/challenge_enrollment/webauthn`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListWebAuthNEnrollmentResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListWebAuthNEnrollmentResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Replace the challenge specified by challenge_id\n     * Replace the challenge specified by challenge_id\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceChallenge(requestParameters: ReplaceChallengeRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Challenge>;\n    public replaceChallenge(requestParameters: ReplaceChallengeRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Challenge>>;\n    public replaceChallenge(requestParameters: ReplaceChallengeRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Challenge>>;\n    public replaceChallenge(requestParameters: ReplaceChallengeRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const challenge_id = requestParameters.challenge_id;\n        if (challenge_id === null || challenge_id === undefined) {\n            throw new Error('Required parameter challenge_id was null or undefined when calling replaceChallenge.');\n        }\n        const Challenge = requestParameters.Challenge;\n        if (Challenge === null || Challenge === undefined) {\n            throw new Error('Required parameter Challenge was null or undefined when calling replaceChallenge.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n        return of(undefined).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_Challenge>(`${this.configuration.basePath}/v1/challenges/${encodeURIComponent(String(challenge_id))}`,\n                    Challenge,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Challenge) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ChallengeImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update the totp_enrollment if the answer provided is correct.\n     * Update the totp_enrollment if the answer provided is correct. This moves the state from pending to success.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public updateTotpEnrollment(requestParameters: UpdateTotpEnrollmentRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<TOTPEnrollment>;\n    public updateTotpEnrollment(requestParameters: UpdateTotpEnrollmentRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<TOTPEnrollment>>;\n    public updateTotpEnrollment(requestParameters: UpdateTotpEnrollmentRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<TOTPEnrollment>>;\n    public updateTotpEnrollment(requestParameters: UpdateTotpEnrollmentRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const totp_id = requestParameters.totp_id;\n        if (totp_id === null || totp_id === undefined) {\n            throw new Error('Required parameter totp_id was null or undefined when calling updateTotpEnrollment.');\n        }\n        const TOTPEnrollmentAnswer = requestParameters.TOTPEnrollmentAnswer;\n        if (TOTPEnrollmentAnswer === null || TOTPEnrollmentAnswer === undefined) {\n            throw new Error('Required parameter TOTPEnrollmentAnswer was null or undefined when calling updateTotpEnrollment.');\n        }\n        const user_id = requestParameters.user_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_TOTPEnrollment>(`${this.configuration.basePath}/v1/challenge_enrollment/totp/${encodeURIComponent(String(totp_id))}`,\n                    TOTPEnrollmentAnswer,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _TOTPEnrollment) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new TOTPEnrollmentImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update the WebAuthN enrollment if the answer provided is correct.\n     * Update the WebAuthN enrollment if the answer provided is correct. This completes the device enrollment.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public updateWebauthnEnrollment(requestParameters: UpdateWebauthnEnrollmentRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<WebAuthNEnrollment>;\n    public updateWebauthnEnrollment(requestParameters: UpdateWebauthnEnrollmentRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<WebAuthNEnrollment>>;\n    public updateWebauthnEnrollment(requestParameters: UpdateWebauthnEnrollmentRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<WebAuthNEnrollment>>;\n    public updateWebauthnEnrollment(requestParameters: UpdateWebauthnEnrollmentRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const webauthn_id = requestParameters.webauthn_id;\n        if (webauthn_id === null || webauthn_id === undefined) {\n            throw new Error('Required parameter webauthn_id was null or undefined when calling updateWebauthnEnrollment.');\n        }\n        const WebAuthNEnrollmentAnswer = requestParameters.WebAuthNEnrollmentAnswer;\n        if (WebAuthNEnrollmentAnswer === null || WebAuthNEnrollmentAnswer === undefined) {\n            throw new Error('Required parameter WebAuthNEnrollmentAnswer was null or undefined when calling updateWebauthnEnrollment.');\n        }\n        const user_id = requestParameters.user_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_WebAuthNEnrollment>(`${this.configuration.basePath}/v1/challenge_enrollment/webauthn/${encodeURIComponent(String(webauthn_id))}`,\n                    WebAuthNEnrollmentAnswer,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _WebAuthNEnrollment) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new WebAuthNEnrollmentImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _AdminStatus, AdminStatus, AdminStatusImpl } from '../model/models';\nimport { _AgentConnector, AgentConnector, AgentConnectorImpl } from '../model/models';\nimport { _AgentConnectorDynamicStats, AgentConnectorDynamicStats, AgentConnectorDynamicStatsImpl } from '../model/models';\nimport { _AgentConnectorInfo, AgentConnectorInfo, AgentConnectorInfoImpl } from '../model/models';\nimport { _AgentConnectorInstance, AgentConnectorInstance, AgentConnectorInstanceImpl } from '../model/models';\nimport { _AgentConnectorProxy, AgentConnectorProxy, AgentConnectorProxyImpl } from '../model/models';\nimport { _AgentConnectorQueue, AgentConnectorQueue, AgentConnectorQueueImpl } from '../model/models';\nimport { _AgentConnectorQueueResponse, AgentConnectorQueueResponse, AgentConnectorQueueResponseImpl } from '../model/models';\nimport { _AgentConnectorStats, AgentConnectorStats, AgentConnectorStatsImpl } from '../model/models';\nimport { _AgentLocalAuthInfo, AgentLocalAuthInfo, AgentLocalAuthInfoImpl } from '../model/models';\nimport { _AppliedConnectorStatsConfig, AppliedConnectorStatsConfig, AppliedConnectorStatsConfigImpl } from '../model/models';\nimport { _CSRReasonEnum, CSRReasonEnum, CSRReasonEnumImpl } from '../model/models';\nimport { _CertSigningReq, CertSigningReq, CertSigningReqImpl } from '../model/models';\nimport { _ConfigureConnectorStatsPublishingRequest, ConfigureConnectorStatsPublishingRequest, ConfigureConnectorStatsPublishingRequestImpl } from '../model/models';\nimport { _Connector, Connector, ConnectorImpl } from '../model/models';\nimport { _ConnectorSecureTransfer, ConnectorSecureTransfer, ConnectorSecureTransferImpl } from '../model/models';\nimport { _ConnectorService, ConnectorService, ConnectorServiceImpl } from '../model/models';\nimport { _EncryptedData, EncryptedData, EncryptedDataImpl } from '../model/models';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _IpsecConnector, IpsecConnector, IpsecConnectorImpl } from '../model/models';\nimport { _ListAgentConnectorInstanceResponse, ListAgentConnectorInstanceResponse, ListAgentConnectorInstanceResponseImpl } from '../model/models';\nimport { _ListAgentConnectorProxyResponse, ListAgentConnectorProxyResponse, ListAgentConnectorProxyResponseImpl } from '../model/models';\nimport { _ListAgentConnectorResponse, ListAgentConnectorResponse, ListAgentConnectorResponseImpl } from '../model/models';\nimport { _ListCertSigningReqResponse, ListCertSigningReqResponse, ListCertSigningReqResponseImpl } from '../model/models';\nimport { _ListConnectorResponse, ListConnectorResponse, ListConnectorResponseImpl } from '../model/models';\nimport { _ListConnectorSecureTransferResponse, ListConnectorSecureTransferResponse, ListConnectorSecureTransferResponseImpl } from '../model/models';\nimport { _ListConnectorServiceResponse, ListConnectorServiceResponse, ListConnectorServiceResponseImpl } from '../model/models';\nimport { _ListConnectorStatsResponse, ListConnectorStatsResponse, ListConnectorStatsResponseImpl } from '../model/models';\nimport { _ListGuidMetadataResponse, ListGuidMetadataResponse, ListGuidMetadataResponseImpl } from '../model/models';\nimport { _ListIpsecConnectorResponse, ListIpsecConnectorResponse, ListIpsecConnectorResponseImpl } from '../model/models';\nimport { _UsageMetrics, UsageMetrics, UsageMetricsImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    ConnectorsServiceInterface,\n    CreateAgentConnectorRequestParams,\n    CreateAgentCsrRequestParams,\n    CreateAgentStatsRequestParams,\n    CreateConfigurePublishingRequestRequestParams,\n    CreateConnectorProxyRequestParams,\n    CreateCsrRequestParams,\n    CreateInstanceRequestParams,\n    CreateIpsecConnectorRequestParams,\n    CreateQueueRequestParams,\n    CreateServiceRequestParams,\n    CreateTransferRequestParams,\n    DeleteAgentConnectorRequestParams,\n    DeleteConnectorRequestParams,\n    DeleteConnectorQueueRequestParams,\n    DeleteInstanceRequestParams,\n    DeleteIpsecConnectorRequestParams,\n    DeleteProxyRequestParams,\n    DeleteServiceRequestParams,\n    DeleteTransferRequestParams,\n    GetAgentConnectorRequestParams,\n    GetAgentConnectorDynamicStatsRequestParams,\n    GetAgentCsrRequestParams,\n    GetAgentInfoRequestParams,\n    GetAgentStatsRequestParams,\n    GetConnectorRequestParams,\n    GetConnectorQueueRequestParams,\n    GetConnectorQueuesRequestParams,\n    GetConnectorUsageMetricsRequestParams,\n    GetEncryptedDataRequestParams,\n    GetInstanceRequestParams,\n    GetIpsecConnectorRequestParams,\n    GetIpsecConnectorInfoRequestParams,\n    GetProxyRequestParams,\n    GetQueuesRequestParams,\n    GetServiceRequestParams,\n    GetStatsConfigRequestParams,\n    GetTransferRequestParams,\n    ListAgentConnectorRequestParams,\n    ListAgentCsrRequestParams,\n    ListConnectorRequestParams,\n    ListConnectorGuidMappingRequestParams,\n    ListConnectorStatsRequestParams,\n    ListInstancesRequestParams,\n    ListIpsecConnectorRequestParams,\n    ListProxiesRequestParams,\n    ListServicesRequestParams,\n    ListTransfersRequestParams,\n    ReplaceAgentConnectorRequestParams,\n    ReplaceAgentConnectorLocalAuthInfoRequestParams,\n    ReplaceAgentCsrRequestParams,\n    ReplaceEncryptedDataRequestParams,\n    ReplaceInstanceRequestParams,\n    ReplaceIpsecConnectorRequestParams,\n    ReplaceProxyRequestParams,\n    ReplaceTransferRequestParams\n} from './connectors.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ConnectorsService implements ConnectorsServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Create an agent connector\n     * Create an agent connector\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createAgentConnector(requestParameters: CreateAgentConnectorRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AgentConnector>;\n    public createAgentConnector(requestParameters: CreateAgentConnectorRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AgentConnector>>;\n    public createAgentConnector(requestParameters: CreateAgentConnectorRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AgentConnector>>;\n    public createAgentConnector(requestParameters: CreateAgentConnectorRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const AgentConnector = requestParameters.AgentConnector;\n        if (AgentConnector === null || AgentConnector === undefined) {\n            throw new Error('Required parameter AgentConnector was null or undefined when calling createAgentConnector.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_AgentConnector>(`${this.configuration.basePath}/v1/agent_connectors`,\n                    AgentConnector,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AgentConnector) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AgentConnectorImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Creates a CertSigningReq\n     * Creates a CertSigningReq \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createAgentCsr(requestParameters: CreateAgentCsrRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<CertSigningReq>;\n    public createAgentCsr(requestParameters: CreateAgentCsrRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<CertSigningReq>>;\n    public createAgentCsr(requestParameters: CreateAgentCsrRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<CertSigningReq>>;\n    public createAgentCsr(requestParameters: CreateAgentCsrRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling createAgentCsr.');\n        }\n        const CertSigningReq = requestParameters.CertSigningReq;\n        if (CertSigningReq === null || CertSigningReq === undefined) {\n            throw new Error('Required parameter CertSigningReq was null or undefined when calling createAgentCsr.');\n        }\n        const private_key_id = requestParameters.private_key_id;\n        const target_issuer = requestParameters.target_issuer;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (private_key_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>private_key_id, 'private_key_id');\n        }\n        if (target_issuer) {\n            target_issuer.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'target_issuer');\n            })\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_CertSigningReq>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}/certificate_signing_requests`,\n                    CertSigningReq,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _CertSigningReq) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new CertSigningReqImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Creates an AgentConnectorStats record.\n     * Publishes the most recent stats collected by the AgentConnector. Currently only the most recent AgentCollectorStats is retained, but in the future some history may be recorded. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createAgentStats(requestParameters: CreateAgentStatsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AgentConnectorStats>;\n    public createAgentStats(requestParameters: CreateAgentStatsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AgentConnectorStats>>;\n    public createAgentStats(requestParameters: CreateAgentStatsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AgentConnectorStats>>;\n    public createAgentStats(requestParameters: CreateAgentStatsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling createAgentStats.');\n        }\n        const AgentConnectorStats = requestParameters.AgentConnectorStats;\n        if (AgentConnectorStats === null || AgentConnectorStats === undefined) {\n            throw new Error('Required parameter AgentConnectorStats was null or undefined when calling createAgentStats.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_AgentConnectorStats>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}/stats`,\n                    AgentConnectorStats,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AgentConnectorStats) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AgentConnectorStatsImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Configure stats publishing for a group of connectors\n     * Applies the provided publishing configuration to a group of connectors. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createConfigurePublishingRequest(requestParameters: CreateConfigurePublishingRequestRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ConfigureConnectorStatsPublishingRequest>;\n    public createConfigurePublishingRequest(requestParameters: CreateConfigurePublishingRequestRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ConfigureConnectorStatsPublishingRequest>>;\n    public createConfigurePublishingRequest(requestParameters: CreateConfigurePublishingRequestRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ConfigureConnectorStatsPublishingRequest>>;\n    public createConfigurePublishingRequest(requestParameters: CreateConfigurePublishingRequestRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const ConfigureConnectorStatsPublishingRequest = requestParameters.ConfigureConnectorStatsPublishingRequest;\n        if (ConfigureConnectorStatsPublishingRequest === null || ConfigureConnectorStatsPublishingRequest === undefined) {\n            throw new Error('Required parameter ConfigureConnectorStatsPublishingRequest was null or undefined when calling createConfigurePublishingRequest.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_ConfigureConnectorStatsPublishingRequest>(`${this.configuration.basePath}/v1/connectors/stats/configure_publishing`,\n                    ConfigureConnectorStatsPublishingRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ConfigureConnectorStatsPublishingRequest) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ConfigureConnectorStatsPublishingRequestImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Creates a connector proxy\n     * Creates a connector proxy\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createConnectorProxy(requestParameters: CreateConnectorProxyRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AgentConnectorProxy>;\n    public createConnectorProxy(requestParameters: CreateConnectorProxyRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AgentConnectorProxy>>;\n    public createConnectorProxy(requestParameters: CreateConnectorProxyRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AgentConnectorProxy>>;\n    public createConnectorProxy(requestParameters: CreateConnectorProxyRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const AgentConnectorProxy = requestParameters.AgentConnectorProxy;\n        if (AgentConnectorProxy === null || AgentConnectorProxy === undefined) {\n            throw new Error('Required parameter AgentConnectorProxy was null or undefined when calling createConnectorProxy.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_AgentConnectorProxy>(`${this.configuration.basePath}/v1/agent_connectors/proxies`,\n                    AgentConnectorProxy,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AgentConnectorProxy) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AgentConnectorProxyImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Creates a CertSigningReq\n     * Creates a CertSigningReq \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createCsr(requestParameters: CreateCsrRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<CertSigningReq>;\n    public createCsr(requestParameters: CreateCsrRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<CertSigningReq>>;\n    public createCsr(requestParameters: CreateCsrRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<CertSigningReq>>;\n    public createCsr(requestParameters: CreateCsrRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const CertSigningReq = requestParameters.CertSigningReq;\n        if (CertSigningReq === null || CertSigningReq === undefined) {\n            throw new Error('Required parameter CertSigningReq was null or undefined when calling createCsr.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_CertSigningReq>(`${this.configuration.basePath}/v1/certificate_signing_requests`,\n                    CertSigningReq,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _CertSigningReq) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new CertSigningReqImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Creates an AgentConnectorInstance\n     * Create an AgentConnectorInstance of an AgentConnector \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createInstance(requestParameters: CreateInstanceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AgentConnectorInstance>;\n    public createInstance(requestParameters: CreateInstanceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AgentConnectorInstance>>;\n    public createInstance(requestParameters: CreateInstanceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AgentConnectorInstance>>;\n    public createInstance(requestParameters: CreateInstanceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling createInstance.');\n        }\n        const AgentConnectorInstance = requestParameters.AgentConnectorInstance;\n        if (AgentConnectorInstance === null || AgentConnectorInstance === undefined) {\n            throw new Error('Required parameter AgentConnectorInstance was null or undefined when calling createInstance.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_AgentConnectorInstance>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}/instances`,\n                    AgentConnectorInstance,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AgentConnectorInstance) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AgentConnectorInstanceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create an IPsec connector\n     * Create an IPsec connector\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createIpsecConnector(requestParameters: CreateIpsecConnectorRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<IpsecConnector>;\n    public createIpsecConnector(requestParameters: CreateIpsecConnectorRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<IpsecConnector>>;\n    public createIpsecConnector(requestParameters: CreateIpsecConnectorRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<IpsecConnector>>;\n    public createIpsecConnector(requestParameters: CreateIpsecConnectorRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const IpsecConnector = requestParameters.IpsecConnector;\n        if (IpsecConnector === null || IpsecConnector === undefined) {\n            throw new Error('Required parameter IpsecConnector was null or undefined when calling createIpsecConnector.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_IpsecConnector>(`${this.configuration.basePath}/v1/ipsec_connectors`,\n                    IpsecConnector,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _IpsecConnector) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new IpsecConnectorImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Creates an AgentConnectorQueue for receiving updates.\n     * Agent Connectors are notified on changes to its configuration via a AMQ Stomp queue.  The agent connector may create queues for various purposes, such as receiving notifications about configuration updates. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createQueue(requestParameters: CreateQueueRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AgentConnectorQueue>;\n    public createQueue(requestParameters: CreateQueueRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AgentConnectorQueue>>;\n    public createQueue(requestParameters: CreateQueueRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AgentConnectorQueue>>;\n    public createQueue(requestParameters: CreateQueueRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling createQueue.');\n        }\n        const AgentConnectorQueue = requestParameters.AgentConnectorQueue;\n        if (AgentConnectorQueue === null || AgentConnectorQueue === undefined) {\n            throw new Error('Required parameter AgentConnectorQueue was null or undefined when calling createQueue.');\n        }\n        const limit = requestParameters.limit;\n        const page_at_id = requestParameters.page_at_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_AgentConnectorQueue>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}/queues`,\n                    AgentConnectorQueue,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AgentConnectorQueue) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AgentConnectorQueueImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Creates an ConnectorServices\n     * Create an ConnectorService of an Connector \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createService(requestParameters: CreateServiceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ConnectorService>;\n    public createService(requestParameters: CreateServiceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ConnectorService>>;\n    public createService(requestParameters: CreateServiceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ConnectorService>>;\n    public createService(requestParameters: CreateServiceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling createService.');\n        }\n        const ConnectorService = requestParameters.ConnectorService;\n        if (ConnectorService === null || ConnectorService === undefined) {\n            throw new Error('Required parameter ConnectorService was null or undefined when calling createService.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_ConnectorService>(`${this.configuration.basePath}/v1/connectors/${encodeURIComponent(String(connector_id))}/services`,\n                    ConnectorService,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ConnectorService) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ConnectorServiceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Creates an ConnectorSecureTransfer\n     * Create an ConnectorSecureTransfer of an Connector \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createTransfer(requestParameters: CreateTransferRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ConnectorSecureTransfer>;\n    public createTransfer(requestParameters: CreateTransferRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ConnectorSecureTransfer>>;\n    public createTransfer(requestParameters: CreateTransferRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ConnectorSecureTransfer>>;\n    public createTransfer(requestParameters: CreateTransferRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling createTransfer.');\n        }\n        const ConnectorSecureTransfer = requestParameters.ConnectorSecureTransfer;\n        if (ConnectorSecureTransfer === null || ConnectorSecureTransfer === undefined) {\n            throw new Error('Required parameter ConnectorSecureTransfer was null or undefined when calling createTransfer.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_ConnectorSecureTransfer>(`${this.configuration.basePath}/v1/connectors/${encodeURIComponent(String(connector_id))}/secure_transfers`,\n                    ConnectorSecureTransfer,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ConnectorSecureTransfer) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ConnectorSecureTransferImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a agent\n     * Delete a agent\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteAgentConnector(requestParameters: DeleteAgentConnectorRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteAgentConnector(requestParameters: DeleteAgentConnectorRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteAgentConnector(requestParameters: DeleteAgentConnectorRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteAgentConnector(requestParameters: DeleteAgentConnectorRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling deleteAgentConnector.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a connector\n     * Delete a connector\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteConnector(requestParameters: DeleteConnectorRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteConnector(requestParameters: DeleteConnectorRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteConnector(requestParameters: DeleteConnectorRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteConnector(requestParameters: DeleteConnectorRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling deleteConnector.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/connectors/${encodeURIComponent(String(connector_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a connector queue\n     * Delete a connector queue\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteConnectorQueue(requestParameters: DeleteConnectorQueueRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteConnectorQueue(requestParameters: DeleteConnectorQueueRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteConnectorQueue(requestParameters: DeleteConnectorQueueRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteConnectorQueue(requestParameters: DeleteConnectorQueueRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling deleteConnectorQueue.');\n        }\n        const queue_id = requestParameters.queue_id;\n        if (queue_id === null || queue_id === undefined) {\n            throw new Error('Required parameter queue_id was null or undefined when calling deleteConnectorQueue.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}/queues/${encodeURIComponent(String(queue_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete an agent connector instance\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteInstance(requestParameters: DeleteInstanceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteInstance(requestParameters: DeleteInstanceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteInstance(requestParameters: DeleteInstanceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteInstance(requestParameters: DeleteInstanceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling deleteInstance.');\n        }\n        const connector_instance_id = requestParameters.connector_instance_id;\n        if (connector_instance_id === null || connector_instance_id === undefined) {\n            throw new Error('Required parameter connector_instance_id was null or undefined when calling deleteInstance.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}/instances/${encodeURIComponent(String(connector_instance_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete an IPsec connector\n     * Delete an IPsec connector\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteIpsecConnector(requestParameters: DeleteIpsecConnectorRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteIpsecConnector(requestParameters: DeleteIpsecConnectorRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteIpsecConnector(requestParameters: DeleteIpsecConnectorRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteIpsecConnector(requestParameters: DeleteIpsecConnectorRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling deleteIpsecConnector.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/ipsec_connectors/${encodeURIComponent(String(connector_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete an AgentConnectorProxy\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteProxy(requestParameters: DeleteProxyRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteProxy(requestParameters: DeleteProxyRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteProxy(requestParameters: DeleteProxyRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteProxy(requestParameters: DeleteProxyRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const connector_proxy_id = requestParameters.connector_proxy_id;\n        if (connector_proxy_id === null || connector_proxy_id === undefined) {\n            throw new Error('Required parameter connector_proxy_id was null or undefined when calling deleteProxy.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/agent_connectors/proxies/${encodeURIComponent(String(connector_proxy_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a connector service\n     * Delete a connector service\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteService(requestParameters: DeleteServiceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteService(requestParameters: DeleteServiceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteService(requestParameters: DeleteServiceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteService(requestParameters: DeleteServiceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling deleteService.');\n        }\n        const connector_service = requestParameters.connector_service;\n        if (connector_service === null || connector_service === undefined) {\n            throw new Error('Required parameter connector_service was null or undefined when calling deleteService.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/connectors/${encodeURIComponent(String(connector_id))}/services/${encodeURIComponent(String(connector_service))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete an ConnectorSecureTransfer\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteTransfer(requestParameters: DeleteTransferRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteTransfer(requestParameters: DeleteTransferRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteTransfer(requestParameters: DeleteTransferRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteTransfer(requestParameters: DeleteTransferRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling deleteTransfer.');\n        }\n        const transfer_id = requestParameters.transfer_id;\n        if (transfer_id === null || transfer_id === undefined) {\n            throw new Error('Required parameter transfer_id was null or undefined when calling deleteTransfer.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/connectors/${encodeURIComponent(String(connector_id))}/secure_transfers/${encodeURIComponent(String(transfer_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get an agent\n     * Get an agent\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getAgentConnector(requestParameters: GetAgentConnectorRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AgentConnector>;\n    public getAgentConnector(requestParameters: GetAgentConnectorRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AgentConnector>>;\n    public getAgentConnector(requestParameters: GetAgentConnectorRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AgentConnector>>;\n    public getAgentConnector(requestParameters: GetAgentConnectorRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling getAgentConnector.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_AgentConnector>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AgentConnector) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AgentConnectorImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get the AgentConnector dynamic stats for many instances\n     * Gets the most recent dynamic stats published by the AgentConnector\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getAgentConnectorDynamicStats(requestParameters: GetAgentConnectorDynamicStatsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AgentConnectorDynamicStats>;\n    public getAgentConnectorDynamicStats(requestParameters: GetAgentConnectorDynamicStatsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AgentConnectorDynamicStats>>;\n    public getAgentConnectorDynamicStats(requestParameters: GetAgentConnectorDynamicStatsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AgentConnectorDynamicStats>>;\n    public getAgentConnectorDynamicStats(requestParameters: GetAgentConnectorDynamicStatsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling getAgentConnectorDynamicStats.');\n        }\n        const org_id = requestParameters.org_id;\n        const collected_by = requestParameters.collected_by;\n        const collected_since = requestParameters.collected_since;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (collected_by !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>collected_by, 'collected_by');\n        }\n        if (collected_since !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>collected_since, 'collected_since');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_AgentConnectorDynamicStats>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}/dynamic_stats`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AgentConnectorDynamicStats) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AgentConnectorDynamicStatsImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a CertSigningReq\n     * Update a CertSigningReq\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getAgentCsr(requestParameters: GetAgentCsrRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<CertSigningReq>;\n    public getAgentCsr(requestParameters: GetAgentCsrRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<CertSigningReq>>;\n    public getAgentCsr(requestParameters: GetAgentCsrRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<CertSigningReq>>;\n    public getAgentCsr(requestParameters: GetAgentCsrRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling getAgentCsr.');\n        }\n        const csr_id = requestParameters.csr_id;\n        if (csr_id === null || csr_id === undefined) {\n            throw new Error('Required parameter csr_id was null or undefined when calling getAgentCsr.');\n        }\n        const org_id = requestParameters.org_id;\n        const limit_csr_certificates = requestParameters.limit_csr_certificates;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (limit_csr_certificates !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit_csr_certificates, 'limit_csr_certificates');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_CertSigningReq>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}/certificate_signing_requests/${encodeURIComponent(String(csr_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _CertSigningReq) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new CertSigningReqImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get information associated with connector\n     * Get information associated with connector\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getAgentInfo(requestParameters: GetAgentInfoRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AgentConnectorInfo>;\n    public getAgentInfo(requestParameters: GetAgentInfoRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AgentConnectorInfo>>;\n    public getAgentInfo(requestParameters: GetAgentInfoRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AgentConnectorInfo>>;\n    public getAgentInfo(requestParameters: GetAgentInfoRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling getAgentInfo.');\n        }\n        const org_id = requestParameters.org_id;\n        const allow_list = requestParameters.allow_list;\n        const service_forwarders = requestParameters.service_forwarders;\n        const authz_public_key = requestParameters.authz_public_key;\n        const active_transfers = requestParameters.active_transfers;\n        const instance_id = requestParameters.instance_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (allow_list !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>allow_list, 'allow_list');\n        }\n        if (service_forwarders !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>service_forwarders, 'service_forwarders');\n        }\n        if (authz_public_key !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>authz_public_key, 'authz_public_key');\n        }\n        if (active_transfers !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>active_transfers, 'active_transfers');\n        }\n        if (instance_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>instance_id, 'instance_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_AgentConnectorInfo>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}/info`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AgentConnectorInfo) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AgentConnectorInfoImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get the AgentConnector stats\n     * Gets the most recent stats published by the AgentConnector\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getAgentStats(requestParameters: GetAgentStatsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AgentConnectorStats>;\n    public getAgentStats(requestParameters: GetAgentStatsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AgentConnectorStats>>;\n    public getAgentStats(requestParameters: GetAgentStatsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AgentConnectorStats>>;\n    public getAgentStats(requestParameters: GetAgentStatsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling getAgentStats.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_AgentConnectorStats>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}/stats`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AgentConnectorStats) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AgentConnectorStatsImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a connector\n     * Get a connector\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getConnector(requestParameters: GetConnectorRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Connector>;\n    public getConnector(requestParameters: GetConnectorRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Connector>>;\n    public getConnector(requestParameters: GetConnectorRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Connector>>;\n    public getConnector(requestParameters: GetConnectorRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling getConnector.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Connector>(`${this.configuration.basePath}/v1/connectors/${encodeURIComponent(String(connector_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Connector) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ConnectorImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a connector queue\n     * Get a connector queue\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getConnectorQueue(requestParameters: GetConnectorQueueRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AgentConnectorQueue>;\n    public getConnectorQueue(requestParameters: GetConnectorQueueRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AgentConnectorQueue>>;\n    public getConnectorQueue(requestParameters: GetConnectorQueueRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AgentConnectorQueue>>;\n    public getConnectorQueue(requestParameters: GetConnectorQueueRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling getConnectorQueue.');\n        }\n        const queue_id = requestParameters.queue_id;\n        if (queue_id === null || queue_id === undefined) {\n            throw new Error('Required parameter queue_id was null or undefined when calling getConnectorQueue.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_AgentConnectorQueue>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}/queues/${encodeURIComponent(String(queue_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AgentConnectorQueue) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AgentConnectorQueueImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all AgentConnectorQueues for a connector_id\n     * Get all AgentConnectorQueues for a connector_id\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getConnectorQueues(requestParameters: GetConnectorQueuesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AgentConnectorQueueResponse>;\n    public getConnectorQueues(requestParameters: GetConnectorQueuesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AgentConnectorQueueResponse>>;\n    public getConnectorQueues(requestParameters: GetConnectorQueuesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AgentConnectorQueueResponse>>;\n    public getConnectorQueues(requestParameters: GetConnectorQueuesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling getConnectorQueues.');\n        }\n        const limit = requestParameters.limit;\n        const page_at_id = requestParameters.page_at_id;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_AgentConnectorQueueResponse>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}/queues`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AgentConnectorQueueResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AgentConnectorQueueResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all connector metrics\n     * Retrieves all connector metrics for a specified the org_id. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getConnectorUsageMetrics(requestParameters: GetConnectorUsageMetricsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UsageMetrics>;\n    public getConnectorUsageMetrics(requestParameters: GetConnectorUsageMetricsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UsageMetrics>>;\n    public getConnectorUsageMetrics(requestParameters: GetConnectorUsageMetricsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UsageMetrics>>;\n    public getConnectorUsageMetrics(requestParameters: GetConnectorUsageMetricsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const org_ids = requestParameters.org_ids;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (org_ids) {\n            org_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'org_ids');\n            })\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_UsageMetrics>(`${this.configuration.basePath}/v1/connectors/usage_metrics`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UsageMetrics) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UsageMetricsImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Retrieve the EncryptedData data for a given connector_id and transfer_id. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getEncryptedData(requestParameters: GetEncryptedDataRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<EncryptedData>;\n    public getEncryptedData(requestParameters: GetEncryptedDataRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<EncryptedData>>;\n    public getEncryptedData(requestParameters: GetEncryptedDataRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<EncryptedData>>;\n    public getEncryptedData(requestParameters: GetEncryptedDataRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling getEncryptedData.');\n        }\n        const transfer_id = requestParameters.transfer_id;\n        if (transfer_id === null || transfer_id === undefined) {\n            throw new Error('Required parameter transfer_id was null or undefined when calling getEncryptedData.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_EncryptedData>(`${this.configuration.basePath}/v1/connectors/${encodeURIComponent(String(connector_id))}/secure_transfers/${encodeURIComponent(String(transfer_id))}/encrypted_data`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _EncryptedData) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new EncryptedDataImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Retrieve the AgentConnectorInstance for a given connector_id and connector_instance_id. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getInstance(requestParameters: GetInstanceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AgentConnectorInstance>;\n    public getInstance(requestParameters: GetInstanceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AgentConnectorInstance>>;\n    public getInstance(requestParameters: GetInstanceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AgentConnectorInstance>>;\n    public getInstance(requestParameters: GetInstanceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling getInstance.');\n        }\n        const connector_instance_id = requestParameters.connector_instance_id;\n        if (connector_instance_id === null || connector_instance_id === undefined) {\n            throw new Error('Required parameter connector_instance_id was null or undefined when calling getInstance.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_AgentConnectorInstance>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}/instances/${encodeURIComponent(String(connector_instance_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AgentConnectorInstance) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AgentConnectorInstanceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get an IPsec connector\n     * Get an IPsec connector\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getIpsecConnector(requestParameters: GetIpsecConnectorRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<IpsecConnector>;\n    public getIpsecConnector(requestParameters: GetIpsecConnectorRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<IpsecConnector>>;\n    public getIpsecConnector(requestParameters: GetIpsecConnectorRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<IpsecConnector>>;\n    public getIpsecConnector(requestParameters: GetIpsecConnectorRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling getIpsecConnector.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_IpsecConnector>(`${this.configuration.basePath}/v1/ipsec_connectors/${encodeURIComponent(String(connector_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _IpsecConnector) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new IpsecConnectorImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get IPsec connector runtime information\n     * Get IPsec connector runtime information. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getIpsecConnectorInfo(requestParameters: GetIpsecConnectorInfoRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<IpsecConnector>;\n    public getIpsecConnectorInfo(requestParameters: GetIpsecConnectorInfoRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<IpsecConnector>>;\n    public getIpsecConnectorInfo(requestParameters: GetIpsecConnectorInfoRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<IpsecConnector>>;\n    public getIpsecConnectorInfo(requestParameters: GetIpsecConnectorInfoRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling getIpsecConnectorInfo.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_IpsecConnector>(`${this.configuration.basePath}/v1/ipsec_connectors/${encodeURIComponent(String(connector_id))}/info`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _IpsecConnector) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new IpsecConnectorImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Retrieve a AgentConnectorProxy\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getProxy(requestParameters: GetProxyRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AgentConnectorProxy>;\n    public getProxy(requestParameters: GetProxyRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AgentConnectorProxy>>;\n    public getProxy(requestParameters: GetProxyRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AgentConnectorProxy>>;\n    public getProxy(requestParameters: GetProxyRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_proxy_id = requestParameters.connector_proxy_id;\n        if (connector_proxy_id === null || connector_proxy_id === undefined) {\n            throw new Error('Required parameter connector_proxy_id was null or undefined when calling getProxy.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_AgentConnectorProxy>(`${this.configuration.basePath}/v1/agent_connectors/proxies/${encodeURIComponent(String(connector_proxy_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AgentConnectorProxy) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AgentConnectorProxyImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all AgentConnectorQueues\n     * Get all AgentConnectorQueues\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getQueues(requestParameters: GetQueuesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AgentConnectorQueueResponse>;\n    public getQueues(requestParameters: GetQueuesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AgentConnectorQueueResponse>>;\n    public getQueues(requestParameters: GetQueuesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AgentConnectorQueueResponse>>;\n    public getQueues(requestParameters: GetQueuesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const limit = requestParameters.limit;\n        const page_at_id = requestParameters.page_at_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_AgentConnectorQueueResponse>(`${this.configuration.basePath}/v1/agent_connectors/queues`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AgentConnectorQueueResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AgentConnectorQueueResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get ConnectorService\n     * Get ConnectorService\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getService(requestParameters: GetServiceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ConnectorService>;\n    public getService(requestParameters: GetServiceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ConnectorService>>;\n    public getService(requestParameters: GetServiceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ConnectorService>>;\n    public getService(requestParameters: GetServiceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling getService.');\n        }\n        const connector_service = requestParameters.connector_service;\n        if (connector_service === null || connector_service === undefined) {\n            throw new Error('Required parameter connector_service was null or undefined when calling getService.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ConnectorService>(`${this.configuration.basePath}/v1/connectors/${encodeURIComponent(String(connector_id))}/services/${encodeURIComponent(String(connector_service))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ConnectorService) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ConnectorServiceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get the Connector stats configuration\n     * Gets the current stats configuration for the Connector\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getStatsConfig(requestParameters: GetStatsConfigRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AppliedConnectorStatsConfig>;\n    public getStatsConfig(requestParameters: GetStatsConfigRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AppliedConnectorStatsConfig>>;\n    public getStatsConfig(requestParameters: GetStatsConfigRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AppliedConnectorStatsConfig>>;\n    public getStatsConfig(requestParameters: GetStatsConfigRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling getStatsConfig.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_AppliedConnectorStatsConfig>(`${this.configuration.basePath}/v1/connectors/${encodeURIComponent(String(connector_id))}/stats/config`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AppliedConnectorStatsConfig) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AppliedConnectorStatsConfigImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Retrieve the ConnectorSecureTransfer for a given connector_id and transfer_id. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getTransfer(requestParameters: GetTransferRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ConnectorSecureTransfer>;\n    public getTransfer(requestParameters: GetTransferRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ConnectorSecureTransfer>>;\n    public getTransfer(requestParameters: GetTransferRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ConnectorSecureTransfer>>;\n    public getTransfer(requestParameters: GetTransferRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling getTransfer.');\n        }\n        const transfer_id = requestParameters.transfer_id;\n        if (transfer_id === null || transfer_id === undefined) {\n            throw new Error('Required parameter transfer_id was null or undefined when calling getTransfer.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ConnectorSecureTransfer>(`${this.configuration.basePath}/v1/connectors/${encodeURIComponent(String(connector_id))}/secure_transfers/${encodeURIComponent(String(transfer_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ConnectorSecureTransfer) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ConnectorSecureTransferImpl(response)\n            })\n        );\n    }\n\n    /**\n     * list agent connectors\n     * list agent connectors. By default, an AgentConnector will not show stats when listed to speed up the query. Setting the show_stats parameter to true retrieve the stats for every AgentConnector. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listAgentConnector(requestParameters: ListAgentConnectorRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListAgentConnectorResponse>;\n    public listAgentConnector(requestParameters: ListAgentConnectorRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListAgentConnectorResponse>>;\n    public listAgentConnector(requestParameters: ListAgentConnectorRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListAgentConnectorResponse>>;\n    public listAgentConnector(requestParameters: ListAgentConnectorRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const name = requestParameters.name;\n        const show_stats = requestParameters.show_stats;\n        const page_at_id = requestParameters.page_at_id;\n        const admin_status = requestParameters.admin_status;\n        const show_deleted = requestParameters.show_deleted;\n        const page_at_name = requestParameters.page_at_name;\n        const allow_partial_match = requestParameters.allow_partial_match;\n        const page_on = requestParameters.page_on;\n        const page_at_key = requestParameters.page_at_key;\n        const page_sort = requestParameters.page_sort;\n        const search_direction = requestParameters.search_direction;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name, 'name');\n        }\n        if (show_stats !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>show_stats, 'show_stats');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (admin_status !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>admin_status, 'admin_status');\n        }\n        if (show_deleted !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>show_deleted, 'show_deleted');\n        }\n        if (page_at_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_name, 'page_at_name');\n        }\n        if (allow_partial_match !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>allow_partial_match, 'allow_partial_match');\n        }\n        if (page_on) {\n            page_on.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_on');\n            })\n        }\n        if (page_at_key) {\n            page_at_key.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_at_key');\n            })\n        }\n        if (page_sort) {\n            page_sort.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_sort');\n            })\n        }\n        if (search_direction !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>search_direction, 'search_direction');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListAgentConnectorResponse>(`${this.configuration.basePath}/v1/agent_connectors`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListAgentConnectorResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListAgentConnectorResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * list agent connector certificate signing requests\n     * List agent connector certificate signing requests. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listAgentCsr(requestParameters: ListAgentCsrRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListCertSigningReqResponse>;\n    public listAgentCsr(requestParameters: ListAgentCsrRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListCertSigningReqResponse>>;\n    public listAgentCsr(requestParameters: ListAgentCsrRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListCertSigningReqResponse>>;\n    public listAgentCsr(requestParameters: ListAgentCsrRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling listAgentCsr.');\n        }\n        const private_key_id = requestParameters.private_key_id;\n        const target_issuer = requestParameters.target_issuer;\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const reason = requestParameters.reason;\n        const not_valid_after = requestParameters.not_valid_after;\n        const limit_csr_certificates = requestParameters.limit_csr_certificates;\n        const auto_renew = requestParameters.auto_renew;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (private_key_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>private_key_id, 'private_key_id');\n        }\n        if (target_issuer) {\n            target_issuer.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'target_issuer');\n            })\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (reason !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>reason, 'reason');\n        }\n        if (not_valid_after !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>not_valid_after, 'not_valid_after');\n        }\n        if (limit_csr_certificates !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit_csr_certificates, 'limit_csr_certificates');\n        }\n        if (auto_renew !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>auto_renew, 'auto_renew');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListCertSigningReqResponse>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}/certificate_signing_requests`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListCertSigningReqResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListCertSigningReqResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List connectors\n     * List connectors. By default, Connectors will not show stats when listed to speed up the query. Set the show_stats parameter to true to retrieve the stats for every Connector. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listConnector(requestParameters: ListConnectorRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListConnectorResponse>;\n    public listConnector(requestParameters: ListConnectorRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListConnectorResponse>>;\n    public listConnector(requestParameters: ListConnectorRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListConnectorResponse>>;\n    public listConnector(requestParameters: ListConnectorRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const name = requestParameters.name;\n        const type = requestParameters.type;\n        const show_stats = requestParameters.show_stats;\n        const admin_status = requestParameters.admin_status;\n        const show_deleted = requestParameters.show_deleted;\n        const page_at_id = requestParameters.page_at_id;\n        const page_at_name = requestParameters.page_at_name;\n        const allow_partial_match = requestParameters.allow_partial_match;\n        const page_on = requestParameters.page_on;\n        const page_at_key = requestParameters.page_at_key;\n        const page_sort = requestParameters.page_sort;\n        const search_direction = requestParameters.search_direction;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name, 'name');\n        }\n        if (type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>type, 'type');\n        }\n        if (show_stats !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>show_stats, 'show_stats');\n        }\n        if (admin_status !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>admin_status, 'admin_status');\n        }\n        if (show_deleted !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>show_deleted, 'show_deleted');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (page_at_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_name, 'page_at_name');\n        }\n        if (allow_partial_match !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>allow_partial_match, 'allow_partial_match');\n        }\n        if (page_on) {\n            page_on.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_on');\n            })\n        }\n        if (page_at_key) {\n            page_at_key.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_at_key');\n            })\n        }\n        if (page_sort) {\n            page_sort.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_sort');\n            })\n        }\n        if (search_direction !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>search_direction, 'search_direction');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListConnectorResponse>(`${this.configuration.basePath}/v1/connectors`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListConnectorResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListConnectorResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all connector guids and a unique name mapping\n     * Get all connector guids and a unique name mapping\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listConnectorGuidMapping(requestParameters: ListConnectorGuidMappingRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListGuidMetadataResponse>;\n    public listConnectorGuidMapping(requestParameters: ListConnectorGuidMappingRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListGuidMetadataResponse>>;\n    public listConnectorGuidMapping(requestParameters: ListConnectorGuidMappingRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListGuidMetadataResponse>>;\n    public listConnectorGuidMapping(requestParameters: ListConnectorGuidMappingRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const connector_id = requestParameters.connector_id;\n        const limit = requestParameters.limit;\n        const previous_guid = requestParameters.previous_guid;\n        const updated_since = requestParameters.updated_since;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (connector_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>connector_id, 'connector_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (previous_guid !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>previous_guid, 'previous_guid');\n        }\n        if (updated_since !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>updated_since, 'updated_since');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListGuidMetadataResponse>(`${this.configuration.basePath}/v1/connectors/guids`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListGuidMetadataResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListGuidMetadataResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get the Connector stats for many connectors\n     * Gets the most recent stats published by many instances. Use &#x60;collected_since&#x60; to filter out any stale stats. Use show_dynamic and show_static to choose the type of information to show. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listConnectorStats(requestParameters: ListConnectorStatsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListConnectorStatsResponse>;\n    public listConnectorStats(requestParameters: ListConnectorStatsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListConnectorStatsResponse>>;\n    public listConnectorStats(requestParameters: ListConnectorStatsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListConnectorStatsResponse>>;\n    public listConnectorStats(requestParameters: ListConnectorStatsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const connector_id_list = requestParameters.connector_id_list;\n        const collected_since = requestParameters.collected_since;\n        const show_dynamic = requestParameters.show_dynamic;\n        const show_static = requestParameters.show_static;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (connector_id_list) {\n            connector_id_list.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'connector_id_list');\n            })\n        }\n        if (collected_since !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>collected_since, 'collected_since');\n        }\n        if (show_dynamic !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>show_dynamic, 'show_dynamic');\n        }\n        if (show_static !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>show_static, 'show_static');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListConnectorStatsResponse>(`${this.configuration.basePath}/v1/connectors/stats`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListConnectorStatsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListConnectorStatsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all AgentConnectorInstances for a connector_id\n     * Get all AgentConnectorInstances for a connector_id\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listInstances(requestParameters: ListInstancesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListAgentConnectorInstanceResponse>;\n    public listInstances(requestParameters: ListInstancesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListAgentConnectorInstanceResponse>>;\n    public listInstances(requestParameters: ListInstancesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListAgentConnectorInstanceResponse>>;\n    public listInstances(requestParameters: ListInstancesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling listInstances.');\n        }\n        const org_id = requestParameters.org_id;\n        const limit = requestParameters.limit;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListAgentConnectorInstanceResponse>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}/instances`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListAgentConnectorInstanceResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListAgentConnectorInstanceResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * list IPsec connectors\n     * list IPsec connectors. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listIpsecConnector(requestParameters: ListIpsecConnectorRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListIpsecConnectorResponse>;\n    public listIpsecConnector(requestParameters: ListIpsecConnectorRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListIpsecConnectorResponse>>;\n    public listIpsecConnector(requestParameters: ListIpsecConnectorRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListIpsecConnectorResponse>>;\n    public listIpsecConnector(requestParameters: ListIpsecConnectorRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const name = requestParameters.name;\n        const render_inheritance = requestParameters.render_inheritance;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name, 'name');\n        }\n        if (render_inheritance !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>render_inheritance, 'render_inheritance');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListIpsecConnectorResponse>(`${this.configuration.basePath}/v1/ipsec_connectors`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListIpsecConnectorResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListIpsecConnectorResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List connector proxies\n     * List connector proxies\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listProxies(requestParameters: ListProxiesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListAgentConnectorProxyResponse>;\n    public listProxies(requestParameters: ListProxiesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListAgentConnectorProxyResponse>>;\n    public listProxies(requestParameters: ListProxiesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListAgentConnectorProxyResponse>>;\n    public listProxies(requestParameters: ListProxiesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const page_at_id = requestParameters.page_at_id;\n        const inner_connector_id = requestParameters.inner_connector_id;\n        const outer_connector_id = requestParameters.outer_connector_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (inner_connector_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>inner_connector_id, 'inner_connector_id');\n        }\n        if (outer_connector_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>outer_connector_id, 'outer_connector_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListAgentConnectorProxyResponse>(`${this.configuration.basePath}/v1/agent_connectors/proxies`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListAgentConnectorProxyResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListAgentConnectorProxyResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all ConnectorServices for a connector_id\n     * Get all ConnectorServices for a connector_id\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listServices(requestParameters: ListServicesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListConnectorServiceResponse>;\n    public listServices(requestParameters: ListServicesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListConnectorServiceResponse>>;\n    public listServices(requestParameters: ListServicesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListConnectorServiceResponse>>;\n    public listServices(requestParameters: ListServicesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling listServices.');\n        }\n        const org_id = requestParameters.org_id;\n        const limit = requestParameters.limit;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListConnectorServiceResponse>(`${this.configuration.basePath}/v1/connectors/${encodeURIComponent(String(connector_id))}/services`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListConnectorServiceResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListConnectorServiceResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all ConnectorSecureTransfers for a connector_id\n     * Get all ConnectorSecureTransfers for a connector_id\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listTransfers(requestParameters: ListTransfersRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListConnectorSecureTransferResponse>;\n    public listTransfers(requestParameters: ListTransfersRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListConnectorSecureTransferResponse>>;\n    public listTransfers(requestParameters: ListTransfersRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListConnectorSecureTransferResponse>>;\n    public listTransfers(requestParameters: ListTransfersRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling listTransfers.');\n        }\n        const org_id = requestParameters.org_id;\n        const limit = requestParameters.limit;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListConnectorSecureTransferResponse>(`${this.configuration.basePath}/v1/connectors/${encodeURIComponent(String(connector_id))}/secure_transfers`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListConnectorSecureTransferResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListConnectorSecureTransferResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update an agent\n     * Update an agent\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceAgentConnector(requestParameters: ReplaceAgentConnectorRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AgentConnector>;\n    public replaceAgentConnector(requestParameters: ReplaceAgentConnectorRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AgentConnector>>;\n    public replaceAgentConnector(requestParameters: ReplaceAgentConnectorRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AgentConnector>>;\n    public replaceAgentConnector(requestParameters: ReplaceAgentConnectorRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling replaceAgentConnector.');\n        }\n        const org_id = requestParameters.org_id;\n        const AgentConnector = requestParameters.AgentConnector;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_AgentConnector>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}`,\n                    AgentConnector,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AgentConnector) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AgentConnectorImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update an agent\\&#39;s local authentication information\n     * Update an agent\\&#39;s local authentication information. This is typically modified by the agent itself.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceAgentConnectorLocalAuthInfo(requestParameters: ReplaceAgentConnectorLocalAuthInfoRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AgentConnector>;\n    public replaceAgentConnectorLocalAuthInfo(requestParameters: ReplaceAgentConnectorLocalAuthInfoRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AgentConnector>>;\n    public replaceAgentConnectorLocalAuthInfo(requestParameters: ReplaceAgentConnectorLocalAuthInfoRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AgentConnector>>;\n    public replaceAgentConnectorLocalAuthInfo(requestParameters: ReplaceAgentConnectorLocalAuthInfoRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling replaceAgentConnectorLocalAuthInfo.');\n        }\n        const AgentLocalAuthInfo = requestParameters.AgentLocalAuthInfo;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_AgentConnector>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}/local_auth_info`,\n                    AgentLocalAuthInfo,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AgentConnector) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AgentConnectorImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a CertSigningReq\n     * Update a CertSigningReq\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceAgentCsr(requestParameters: ReplaceAgentCsrRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<CertSigningReq>;\n    public replaceAgentCsr(requestParameters: ReplaceAgentCsrRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<CertSigningReq>>;\n    public replaceAgentCsr(requestParameters: ReplaceAgentCsrRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<CertSigningReq>>;\n    public replaceAgentCsr(requestParameters: ReplaceAgentCsrRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling replaceAgentCsr.');\n        }\n        const csr_id = requestParameters.csr_id;\n        if (csr_id === null || csr_id === undefined) {\n            throw new Error('Required parameter csr_id was null or undefined when calling replaceAgentCsr.');\n        }\n        const org_id = requestParameters.org_id;\n        const CertSigningReq = requestParameters.CertSigningReq;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_CertSigningReq>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}/certificate_signing_requests/${encodeURIComponent(String(csr_id))}`,\n                    CertSigningReq,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _CertSigningReq) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new CertSigningReqImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update EncryptedData\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceEncryptedData(requestParameters: ReplaceEncryptedDataRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<EncryptedData>;\n    public replaceEncryptedData(requestParameters: ReplaceEncryptedDataRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<EncryptedData>>;\n    public replaceEncryptedData(requestParameters: ReplaceEncryptedDataRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<EncryptedData>>;\n    public replaceEncryptedData(requestParameters: ReplaceEncryptedDataRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling replaceEncryptedData.');\n        }\n        const transfer_id = requestParameters.transfer_id;\n        if (transfer_id === null || transfer_id === undefined) {\n            throw new Error('Required parameter transfer_id was null or undefined when calling replaceEncryptedData.');\n        }\n        const EncryptedData = requestParameters.EncryptedData;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_EncryptedData>(`${this.configuration.basePath}/v1/connectors/${encodeURIComponent(String(connector_id))}/secure_transfers/${encodeURIComponent(String(transfer_id))}/encrypted_data`,\n                    EncryptedData,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _EncryptedData) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new EncryptedDataImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update an agent connector instance\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceInstance(requestParameters: ReplaceInstanceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AgentConnectorInstance>;\n    public replaceInstance(requestParameters: ReplaceInstanceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AgentConnectorInstance>>;\n    public replaceInstance(requestParameters: ReplaceInstanceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AgentConnectorInstance>>;\n    public replaceInstance(requestParameters: ReplaceInstanceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling replaceInstance.');\n        }\n        const connector_instance_id = requestParameters.connector_instance_id;\n        if (connector_instance_id === null || connector_instance_id === undefined) {\n            throw new Error('Required parameter connector_instance_id was null or undefined when calling replaceInstance.');\n        }\n        const org_id = requestParameters.org_id;\n        const AgentConnectorInstance = requestParameters.AgentConnectorInstance;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_AgentConnectorInstance>(`${this.configuration.basePath}/v1/agent_connectors/${encodeURIComponent(String(connector_id))}/instances/${encodeURIComponent(String(connector_instance_id))}`,\n                    AgentConnectorInstance,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AgentConnectorInstance) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AgentConnectorInstanceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update an IPsec connector\n     * Update an IPsec connector\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceIpsecConnector(requestParameters: ReplaceIpsecConnectorRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<IpsecConnector>;\n    public replaceIpsecConnector(requestParameters: ReplaceIpsecConnectorRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<IpsecConnector>>;\n    public replaceIpsecConnector(requestParameters: ReplaceIpsecConnectorRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<IpsecConnector>>;\n    public replaceIpsecConnector(requestParameters: ReplaceIpsecConnectorRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling replaceIpsecConnector.');\n        }\n        const org_id = requestParameters.org_id;\n        const IpsecConnector = requestParameters.IpsecConnector;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_IpsecConnector>(`${this.configuration.basePath}/v1/ipsec_connectors/${encodeURIComponent(String(connector_id))}`,\n                    IpsecConnector,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _IpsecConnector) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new IpsecConnectorImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update an AgentConnectorProxy\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceProxy(requestParameters: ReplaceProxyRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AgentConnectorProxy>;\n    public replaceProxy(requestParameters: ReplaceProxyRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AgentConnectorProxy>>;\n    public replaceProxy(requestParameters: ReplaceProxyRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AgentConnectorProxy>>;\n    public replaceProxy(requestParameters: ReplaceProxyRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_proxy_id = requestParameters.connector_proxy_id;\n        if (connector_proxy_id === null || connector_proxy_id === undefined) {\n            throw new Error('Required parameter connector_proxy_id was null or undefined when calling replaceProxy.');\n        }\n        const AgentConnectorProxy = requestParameters.AgentConnectorProxy;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_AgentConnectorProxy>(`${this.configuration.basePath}/v1/agent_connectors/proxies/${encodeURIComponent(String(connector_proxy_id))}`,\n                    AgentConnectorProxy,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AgentConnectorProxy) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AgentConnectorProxyImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update an ConnectorSecureTransfer\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceTransfer(requestParameters: ReplaceTransferRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ConnectorSecureTransfer>;\n    public replaceTransfer(requestParameters: ReplaceTransferRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ConnectorSecureTransfer>>;\n    public replaceTransfer(requestParameters: ReplaceTransferRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ConnectorSecureTransfer>>;\n    public replaceTransfer(requestParameters: ReplaceTransferRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const connector_id = requestParameters.connector_id;\n        if (connector_id === null || connector_id === undefined) {\n            throw new Error('Required parameter connector_id was null or undefined when calling replaceTransfer.');\n        }\n        const transfer_id = requestParameters.transfer_id;\n        if (transfer_id === null || transfer_id === undefined) {\n            throw new Error('Required parameter transfer_id was null or undefined when calling replaceTransfer.');\n        }\n        const org_id = requestParameters.org_id;\n        const ConnectorSecureTransfer = requestParameters.ConnectorSecureTransfer;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_ConnectorSecureTransfer>(`${this.configuration.basePath}/v1/connectors/${encodeURIComponent(String(connector_id))}/secure_transfers/${encodeURIComponent(String(transfer_id))}`,\n                    ConnectorSecureTransfer,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ConnectorSecureTransfer) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ConnectorSecureTransferImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _ListObjectCredentialExistenceInfoResponse, ListObjectCredentialExistenceInfoResponse, ListObjectCredentialExistenceInfoResponseImpl } from '../model/models';\nimport { _ListObjectCredentialsResponse, ListObjectCredentialsResponse, ListObjectCredentialsResponseImpl } from '../model/models';\nimport { _ObjectCredential, ObjectCredential, ObjectCredentialImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    CredentialsServiceInterface,\n    CreateObjectCredentialRequestParams,\n    DeleteObjectCredentialRequestParams,\n    GetObjectCredentialRequestParams,\n    ListObjectCredentialExistenceInfoRequestParams,\n    ListObjectCredentialsRequestParams,\n    ReplaceObjectCredentialRequestParams\n} from './credentials.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class CredentialsService implements CredentialsServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Add an object_credential\n     * Adds an object_credential. Multiple credentials for a given purpose may exist for an object within an org. However, they must be distringuished by their priority. If one already exists for a given priority, a 409 will be returned. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createObjectCredential(requestParameters: CreateObjectCredentialRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ObjectCredential>;\n    public createObjectCredential(requestParameters: CreateObjectCredentialRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ObjectCredential>>;\n    public createObjectCredential(requestParameters: CreateObjectCredentialRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ObjectCredential>>;\n    public createObjectCredential(requestParameters: CreateObjectCredentialRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const ObjectCredential = requestParameters.ObjectCredential;\n        if (ObjectCredential === null || ObjectCredential === undefined) {\n            throw new Error('Required parameter ObjectCredential was null or undefined when calling createObjectCredential.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_ObjectCredential>(`${this.configuration.basePath}/v1/object_credentials`,\n                    ObjectCredential,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ObjectCredential) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ObjectCredentialImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete an object_credential\n     * Delete an object_credential\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteObjectCredential(requestParameters: DeleteObjectCredentialRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteObjectCredential(requestParameters: DeleteObjectCredentialRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteObjectCredential(requestParameters: DeleteObjectCredentialRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteObjectCredential(requestParameters: DeleteObjectCredentialRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const object_credential_id = requestParameters.object_credential_id;\n        if (object_credential_id === null || object_credential_id === undefined) {\n            throw new Error('Required parameter object_credential_id was null or undefined when calling deleteObjectCredential.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/object_credentials/${encodeURIComponent(String(object_credential_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get an object_credential\n     * Get an object_credential\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getObjectCredential(requestParameters: GetObjectCredentialRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ObjectCredential>;\n    public getObjectCredential(requestParameters: GetObjectCredentialRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ObjectCredential>>;\n    public getObjectCredential(requestParameters: GetObjectCredentialRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ObjectCredential>>;\n    public getObjectCredential(requestParameters: GetObjectCredentialRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const object_credential_id = requestParameters.object_credential_id;\n        if (object_credential_id === null || object_credential_id === undefined) {\n            throw new Error('Required parameter object_credential_id was null or undefined when calling getObjectCredential.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ObjectCredential>(`${this.configuration.basePath}/v1/object_credentials/${encodeURIComponent(String(object_credential_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ObjectCredential) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ObjectCredentialImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List ObjectCredentialExistenceInfo\n     * List whether or not ObjectCredentials exist for the provided query parameters. Perform keyset pagination by setting the page_at_id parameter to the id for the next page to fetch. Set it to &#x60;\\&quot;\\&quot;&#x60; to start from the beginning. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listObjectCredentialExistenceInfo(requestParameters: ListObjectCredentialExistenceInfoRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListObjectCredentialExistenceInfoResponse>;\n    public listObjectCredentialExistenceInfo(requestParameters: ListObjectCredentialExistenceInfoRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListObjectCredentialExistenceInfoResponse>>;\n    public listObjectCredentialExistenceInfo(requestParameters: ListObjectCredentialExistenceInfoRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListObjectCredentialExistenceInfoResponse>>;\n    public listObjectCredentialExistenceInfo(requestParameters: ListObjectCredentialExistenceInfoRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const object_id = requestParameters.object_id;\n        const object_type = requestParameters.object_type;\n        const object_types = requestParameters.object_types;\n        const object_ids = requestParameters.object_ids;\n        const org_ids = requestParameters.org_ids;\n        const page_at_id = requestParameters.page_at_id;\n        const purpose = requestParameters.purpose;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (object_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>object_id, 'object_id');\n        }\n        if (object_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>object_type, 'object_type');\n        }\n        if (object_types) {\n            object_types.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'object_types');\n            })\n        }\n        if (object_ids) {\n            object_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'object_ids');\n            })\n        }\n        if (org_ids) {\n            org_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'org_ids');\n            })\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (purpose !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>purpose, 'purpose');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListObjectCredentialExistenceInfoResponse>(`${this.configuration.basePath}/v1/object_credentials/existence_info`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListObjectCredentialExistenceInfoResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListObjectCredentialExistenceInfoResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all object_credentials\n     * List all object_credentials matching the provided query parameters. Perform keyset pagination by setting the page_at_id parameter to the id for the next page to fetch. Set it to &#x60;\\&quot;\\&quot;&#x60; to start from the beginning. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listObjectCredentials(requestParameters: ListObjectCredentialsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListObjectCredentialsResponse>;\n    public listObjectCredentials(requestParameters: ListObjectCredentialsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListObjectCredentialsResponse>>;\n    public listObjectCredentials(requestParameters: ListObjectCredentialsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListObjectCredentialsResponse>>;\n    public listObjectCredentials(requestParameters: ListObjectCredentialsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const object_id = requestParameters.object_id;\n        const object_type = requestParameters.object_type;\n        const object_types = requestParameters.object_types;\n        const object_ids = requestParameters.object_ids;\n        const org_ids = requestParameters.org_ids;\n        const page_at_id = requestParameters.page_at_id;\n        const encryption_key_id = requestParameters.encryption_key_id;\n        const purpose = requestParameters.purpose;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (object_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>object_id, 'object_id');\n        }\n        if (object_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>object_type, 'object_type');\n        }\n        if (object_types) {\n            object_types.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'object_types');\n            })\n        }\n        if (object_ids) {\n            object_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'object_ids');\n            })\n        }\n        if (org_ids) {\n            org_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'org_ids');\n            })\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (encryption_key_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>encryption_key_id, 'encryption_key_id');\n        }\n        if (purpose !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>purpose, 'purpose');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListObjectCredentialsResponse>(`${this.configuration.basePath}/v1/object_credentials`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListObjectCredentialsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListObjectCredentialsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * update an object_credential\n     * update an object_credential\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceObjectCredential(requestParameters: ReplaceObjectCredentialRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ObjectCredential>;\n    public replaceObjectCredential(requestParameters: ReplaceObjectCredentialRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ObjectCredential>>;\n    public replaceObjectCredential(requestParameters: ReplaceObjectCredentialRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ObjectCredential>>;\n    public replaceObjectCredential(requestParameters: ReplaceObjectCredentialRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const object_credential_id = requestParameters.object_credential_id;\n        if (object_credential_id === null || object_credential_id === undefined) {\n            throw new Error('Required parameter object_credential_id was null or undefined when calling replaceObjectCredential.');\n        }\n        const ObjectCredential = requestParameters.ObjectCredential;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_ObjectCredential>(`${this.configuration.basePath}/v1/object_credentials/${encodeURIComponent(String(object_credential_id))}`,\n                    ObjectCredential,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ObjectCredential) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ObjectCredentialImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _Deployment, Deployment, DeploymentImpl } from '../model/models';\nimport { _DeploymentInstance, DeploymentInstance, DeploymentInstanceImpl } from '../model/models';\nimport { _DeploymentTemplate, DeploymentTemplate, DeploymentTemplateImpl } from '../model/models';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _ListDeploymentInstances, ListDeploymentInstances, ListDeploymentInstancesImpl } from '../model/models';\nimport { _ListDeploymentTemplates, ListDeploymentTemplates, ListDeploymentTemplatesImpl } from '../model/models';\nimport { _ListDeployments, ListDeployments, ListDeploymentsImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    DeploymentsServiceInterface,\n    CreateDeploymentRequestParams,\n    CreateDeploymentInstanceRequestParams,\n    CreateDeploymentTemplateRequestParams,\n    DeleteDeploymentRequestParams,\n    DeleteDeploymentInstanceRequestParams,\n    DeleteDeploymentTemplateRequestParams,\n    GetDeploymentRequestParams,\n    GetDeploymentInstanceRequestParams,\n    GetDeploymentTemplateRequestParams,\n    ListDeploymentInstancesRequestParams,\n    ListDeploymentTemplatesRequestParams,\n    ListDeploymentsRequestParams,\n    UpdateDeploymentRequestParams,\n    UpdateDeploymentInstanceRequestParams,\n    UpdateDeploymentTemplateRequestParams\n} from './deployments.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class DeploymentsService implements DeploymentsServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Add a Deployment\n     * Create a new Deployment \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createDeployment(requestParameters: CreateDeploymentRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Deployment>;\n    public createDeployment(requestParameters: CreateDeploymentRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Deployment>>;\n    public createDeployment(requestParameters: CreateDeploymentRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Deployment>>;\n    public createDeployment(requestParameters: CreateDeploymentRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const Deployment = requestParameters.Deployment;\n        if (Deployment === null || Deployment === undefined) {\n            throw new Error('Required parameter Deployment was null or undefined when calling createDeployment.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Deployment>(`${this.configuration.basePath}/v1/deployments`,\n                    Deployment,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Deployment) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new DeploymentImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Add a DeploymentInstance\n     * Create a new DeploymentInstance \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createDeploymentInstance(requestParameters: CreateDeploymentInstanceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<DeploymentInstance>;\n    public createDeploymentInstance(requestParameters: CreateDeploymentInstanceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<DeploymentInstance>>;\n    public createDeploymentInstance(requestParameters: CreateDeploymentInstanceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<DeploymentInstance>>;\n    public createDeploymentInstance(requestParameters: CreateDeploymentInstanceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const DeploymentInstance = requestParameters.DeploymentInstance;\n        if (DeploymentInstance === null || DeploymentInstance === undefined) {\n            throw new Error('Required parameter DeploymentInstance was null or undefined when calling createDeploymentInstance.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_DeploymentInstance>(`${this.configuration.basePath}/v1/deployment_instances`,\n                    DeploymentInstance,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _DeploymentInstance) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new DeploymentInstanceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Add a DeploymentTemplate\n     * Create a new DeploymentTemplate \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createDeploymentTemplate(requestParameters: CreateDeploymentTemplateRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<DeploymentTemplate>;\n    public createDeploymentTemplate(requestParameters: CreateDeploymentTemplateRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<DeploymentTemplate>>;\n    public createDeploymentTemplate(requestParameters: CreateDeploymentTemplateRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<DeploymentTemplate>>;\n    public createDeploymentTemplate(requestParameters: CreateDeploymentTemplateRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const DeploymentTemplate = requestParameters.DeploymentTemplate;\n        if (DeploymentTemplate === null || DeploymentTemplate === undefined) {\n            throw new Error('Required parameter DeploymentTemplate was null or undefined when calling createDeploymentTemplate.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_DeploymentTemplate>(`${this.configuration.basePath}/v1/deployment_templates`,\n                    DeploymentTemplate,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _DeploymentTemplate) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new DeploymentTemplateImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a deployment\n     * Delete a Deployment\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteDeployment(requestParameters: DeleteDeploymentRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteDeployment(requestParameters: DeleteDeploymentRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteDeployment(requestParameters: DeleteDeploymentRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteDeployment(requestParameters: DeleteDeploymentRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const deployment_id = requestParameters.deployment_id;\n        if (deployment_id === null || deployment_id === undefined) {\n            throw new Error('Required parameter deployment_id was null or undefined when calling deleteDeployment.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/deployments/${encodeURIComponent(String(deployment_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a DeploymentInstance\n     * Delete a DeploymentInstance\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteDeploymentInstance(requestParameters: DeleteDeploymentInstanceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteDeploymentInstance(requestParameters: DeleteDeploymentInstanceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteDeploymentInstance(requestParameters: DeleteDeploymentInstanceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteDeploymentInstance(requestParameters: DeleteDeploymentInstanceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const deployment_instance_id = requestParameters.deployment_instance_id;\n        if (deployment_instance_id === null || deployment_instance_id === undefined) {\n            throw new Error('Required parameter deployment_instance_id was null or undefined when calling deleteDeploymentInstance.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/deployment_instances/${encodeURIComponent(String(deployment_instance_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a DeploymentTemplate\n     * Delete a DeploymentTemplate\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteDeploymentTemplate(requestParameters: DeleteDeploymentTemplateRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteDeploymentTemplate(requestParameters: DeleteDeploymentTemplateRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteDeploymentTemplate(requestParameters: DeleteDeploymentTemplateRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteDeploymentTemplate(requestParameters: DeleteDeploymentTemplateRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const deployment_template_id = requestParameters.deployment_template_id;\n        if (deployment_template_id === null || deployment_template_id === undefined) {\n            throw new Error('Required parameter deployment_template_id was null or undefined when calling deleteDeploymentTemplate.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/deployment_templates/${encodeURIComponent(String(deployment_template_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get a Deployment\n     * Get a Deployment\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getDeployment(requestParameters: GetDeploymentRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Deployment>;\n    public getDeployment(requestParameters: GetDeploymentRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Deployment>>;\n    public getDeployment(requestParameters: GetDeploymentRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Deployment>>;\n    public getDeployment(requestParameters: GetDeploymentRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const deployment_id = requestParameters.deployment_id;\n        if (deployment_id === null || deployment_id === undefined) {\n            throw new Error('Required parameter deployment_id was null or undefined when calling getDeployment.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Deployment>(`${this.configuration.basePath}/v1/deployments/${encodeURIComponent(String(deployment_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Deployment) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new DeploymentImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a DeploymentInstance\n     * Get a DeploymentInstance\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getDeploymentInstance(requestParameters: GetDeploymentInstanceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<DeploymentInstance>;\n    public getDeploymentInstance(requestParameters: GetDeploymentInstanceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<DeploymentInstance>>;\n    public getDeploymentInstance(requestParameters: GetDeploymentInstanceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<DeploymentInstance>>;\n    public getDeploymentInstance(requestParameters: GetDeploymentInstanceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const deployment_instance_id = requestParameters.deployment_instance_id;\n        if (deployment_instance_id === null || deployment_instance_id === undefined) {\n            throw new Error('Required parameter deployment_instance_id was null or undefined when calling getDeploymentInstance.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_DeploymentInstance>(`${this.configuration.basePath}/v1/deployment_instances/${encodeURIComponent(String(deployment_instance_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _DeploymentInstance) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new DeploymentInstanceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a DeploymentTemplate\n     * Get a DeploymentTemplate\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getDeploymentTemplate(requestParameters: GetDeploymentTemplateRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<DeploymentTemplate>;\n    public getDeploymentTemplate(requestParameters: GetDeploymentTemplateRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<DeploymentTemplate>>;\n    public getDeploymentTemplate(requestParameters: GetDeploymentTemplateRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<DeploymentTemplate>>;\n    public getDeploymentTemplate(requestParameters: GetDeploymentTemplateRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const deployment_template_id = requestParameters.deployment_template_id;\n        if (deployment_template_id === null || deployment_template_id === undefined) {\n            throw new Error('Required parameter deployment_template_id was null or undefined when calling getDeploymentTemplate.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_DeploymentTemplate>(`${this.configuration.basePath}/v1/deployment_templates/${encodeURIComponent(String(deployment_template_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _DeploymentTemplate) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new DeploymentTemplateImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all deployment instances\n     * Get a list DeploymentInstance objects\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listDeploymentInstances(requestParameters: ListDeploymentInstancesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListDeploymentInstances>;\n    public listDeploymentInstances(requestParameters: ListDeploymentInstancesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListDeploymentInstances>>;\n    public listDeploymentInstances(requestParameters: ListDeploymentInstancesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListDeploymentInstances>>;\n    public listDeploymentInstances(requestParameters: ListDeploymentInstancesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const limit = requestParameters.limit;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListDeploymentInstances>(`${this.configuration.basePath}/v1/deployment_instances`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListDeploymentInstances) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListDeploymentInstancesImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all deployment templates\n     * Get a list DeploymentTemplate objects\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listDeploymentTemplates(requestParameters: ListDeploymentTemplatesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListDeploymentTemplates>;\n    public listDeploymentTemplates(requestParameters: ListDeploymentTemplatesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListDeploymentTemplates>>;\n    public listDeploymentTemplates(requestParameters: ListDeploymentTemplatesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListDeploymentTemplates>>;\n    public listDeploymentTemplates(requestParameters: ListDeploymentTemplatesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const limit = requestParameters.limit;\n        const deployment_template_type = requestParameters.deployment_template_type;\n        const system_templates = requestParameters.system_templates;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (deployment_template_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>deployment_template_type, 'deployment_template_type');\n        }\n        if (system_templates !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>system_templates, 'system_templates');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListDeploymentTemplates>(`${this.configuration.basePath}/v1/deployment_templates`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListDeploymentTemplates) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListDeploymentTemplatesImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all deployments\n     * Get a list Deployment objects\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listDeployments(requestParameters: ListDeploymentsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListDeployments>;\n    public listDeployments(requestParameters: ListDeploymentsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListDeployments>>;\n    public listDeployments(requestParameters: ListDeploymentsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListDeployments>>;\n    public listDeployments(requestParameters: ListDeploymentsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const limit = requestParameters.limit;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListDeployments>(`${this.configuration.basePath}/v1/deployments`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListDeployments) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListDeploymentsImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a Deployment\n     * Update a Deployment\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public updateDeployment(requestParameters: UpdateDeploymentRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Deployment>;\n    public updateDeployment(requestParameters: UpdateDeploymentRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Deployment>>;\n    public updateDeployment(requestParameters: UpdateDeploymentRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Deployment>>;\n    public updateDeployment(requestParameters: UpdateDeploymentRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const deployment_id = requestParameters.deployment_id;\n        if (deployment_id === null || deployment_id === undefined) {\n            throw new Error('Required parameter deployment_id was null or undefined when calling updateDeployment.');\n        }\n        const Deployment = requestParameters.Deployment;\n        if (Deployment === null || Deployment === undefined) {\n            throw new Error('Required parameter Deployment was null or undefined when calling updateDeployment.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_Deployment>(`${this.configuration.basePath}/v1/deployments/${encodeURIComponent(String(deployment_id))}`,\n                    Deployment,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Deployment) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new DeploymentImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a DeploymentInstance\n     * Update a DeploymentInstance\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public updateDeploymentInstance(requestParameters: UpdateDeploymentInstanceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<DeploymentInstance>;\n    public updateDeploymentInstance(requestParameters: UpdateDeploymentInstanceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<DeploymentInstance>>;\n    public updateDeploymentInstance(requestParameters: UpdateDeploymentInstanceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<DeploymentInstance>>;\n    public updateDeploymentInstance(requestParameters: UpdateDeploymentInstanceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const deployment_instance_id = requestParameters.deployment_instance_id;\n        if (deployment_instance_id === null || deployment_instance_id === undefined) {\n            throw new Error('Required parameter deployment_instance_id was null or undefined when calling updateDeploymentInstance.');\n        }\n        const DeploymentInstance = requestParameters.DeploymentInstance;\n        if (DeploymentInstance === null || DeploymentInstance === undefined) {\n            throw new Error('Required parameter DeploymentInstance was null or undefined when calling updateDeploymentInstance.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_DeploymentInstance>(`${this.configuration.basePath}/v1/deployment_instances/${encodeURIComponent(String(deployment_instance_id))}`,\n                    DeploymentInstance,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _DeploymentInstance) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new DeploymentInstanceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a DeploymentTemplate\n     * Update a DeploymentTemplate\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public updateDeploymentTemplate(requestParameters: UpdateDeploymentTemplateRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<DeploymentTemplate>;\n    public updateDeploymentTemplate(requestParameters: UpdateDeploymentTemplateRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<DeploymentTemplate>>;\n    public updateDeploymentTemplate(requestParameters: UpdateDeploymentTemplateRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<DeploymentTemplate>>;\n    public updateDeploymentTemplate(requestParameters: UpdateDeploymentTemplateRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const deployment_template_id = requestParameters.deployment_template_id;\n        if (deployment_template_id === null || deployment_template_id === undefined) {\n            throw new Error('Required parameter deployment_template_id was null or undefined when calling updateDeploymentTemplate.');\n        }\n        const DeploymentTemplate = requestParameters.DeploymentTemplate;\n        if (DeploymentTemplate === null || DeploymentTemplate === undefined) {\n            throw new Error('Required parameter DeploymentTemplate was null or undefined when calling updateDeploymentTemplate.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_DeploymentTemplate>(`${this.configuration.basePath}/v1/deployment_templates/${encodeURIComponent(String(deployment_template_id))}`,\n                    DeploymentTemplate,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _DeploymentTemplate) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new DeploymentTemplateImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _ListLogsResponse, ListLogsResponse, ListLogsResponseImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    DiagnosticsServiceInterface,\n    ListLogsRequestParams\n} from './diagnostics.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class DiagnosticsService implements DiagnosticsServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Retrieve application logs\n     * Retrieve application diagnostic logs. These are the output from stdout/stderr (stream). \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listLogs(requestParameters: ListLogsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListLogsResponse>;\n    public listLogs(requestParameters: ListLogsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListLogsResponse>>;\n    public listLogs(requestParameters: ListLogsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListLogsResponse>>;\n    public listLogs(requestParameters: ListLogsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling listLogs.');\n        }\n        const dt_from = requestParameters.dt_from;\n        const dt_to = requestParameters.dt_to;\n        const app = requestParameters.app;\n        const sub = requestParameters.sub;\n        const limit = requestParameters.limit;\n        const sub_org_id = requestParameters.sub_org_id;\n        const env = requestParameters.env;\n        const dt_sort = requestParameters.dt_sort;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (dt_from !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>dt_from, 'dt_from');\n        }\n        if (dt_to !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>dt_to, 'dt_to');\n        }\n        if (app !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>app, 'app');\n        }\n        if (sub !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>sub, 'sub');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (sub_org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>sub_org_id, 'sub_org_id');\n        }\n        if (env !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>env, 'env');\n        }\n        if (dt_sort !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>dt_sort, 'dt_sort');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListLogsResponse>(`${this.configuration.basePath}/v1/diagnostics/logs`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListLogsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListLogsResponseImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _FeatureTag, FeatureTag, FeatureTagImpl } from '../model/models';\nimport { _ListFeatureTagsResponse, ListFeatureTagsResponse, ListFeatureTagsResponseImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    FeaturesServiceInterface,\n    AddFeatureTagRequestParams,\n    DeleteFeatureTagRequestParams,\n    GetFeatureTagRequestParams,\n    ListFeatureTagsRequestParams,\n    ReplaceFeatureTagRequestParams\n} from './features.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FeaturesService implements FeaturesServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Add a feature tag\n     * Adds a new feature tag. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public addFeatureTag(requestParameters: AddFeatureTagRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<FeatureTag>;\n    public addFeatureTag(requestParameters: AddFeatureTagRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<FeatureTag>>;\n    public addFeatureTag(requestParameters: AddFeatureTagRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<FeatureTag>>;\n    public addFeatureTag(requestParameters: AddFeatureTagRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const FeatureTag = requestParameters.FeatureTag;\n        if (FeatureTag === null || FeatureTag === undefined) {\n            throw new Error('Required parameter FeatureTag was null or undefined when calling addFeatureTag.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_FeatureTag>(`${this.configuration.basePath}/v1/feature_tags`,\n                    FeatureTag,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _FeatureTag) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new FeatureTagImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a feature tag\n     * Delete a feature tag\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteFeatureTag(requestParameters: DeleteFeatureTagRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteFeatureTag(requestParameters: DeleteFeatureTagRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteFeatureTag(requestParameters: DeleteFeatureTagRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteFeatureTag(requestParameters: DeleteFeatureTagRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const feature_tag_name = requestParameters.feature_tag_name;\n        if (feature_tag_name === null || feature_tag_name === undefined) {\n            throw new Error('Required parameter feature_tag_name was null or undefined when calling deleteFeatureTag.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/feature_tags/${encodeURIComponent(String(feature_tag_name))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get a feature tag\n     * Get a feature tag\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getFeatureTag(requestParameters: GetFeatureTagRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<FeatureTag>;\n    public getFeatureTag(requestParameters: GetFeatureTagRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<FeatureTag>>;\n    public getFeatureTag(requestParameters: GetFeatureTagRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<FeatureTag>>;\n    public getFeatureTag(requestParameters: GetFeatureTagRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const feature_tag_name = requestParameters.feature_tag_name;\n        if (feature_tag_name === null || feature_tag_name === undefined) {\n            throw new Error('Required parameter feature_tag_name was null or undefined when calling getFeatureTag.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_FeatureTag>(`${this.configuration.basePath}/v1/feature_tags/${encodeURIComponent(String(feature_tag_name))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _FeatureTag) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new FeatureTagImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all feature_tags\n     * List all feature_tags matching the provided query parameters. Perform keyset pagination by setting the page_at_name parameter to the name for the next page to fetch. Set it to &#x60;\\&quot;\\&quot;&#x60; to start from the beginning. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listFeatureTags(requestParameters: ListFeatureTagsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListFeatureTagsResponse>;\n    public listFeatureTags(requestParameters: ListFeatureTagsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListFeatureTagsResponse>>;\n    public listFeatureTags(requestParameters: ListFeatureTagsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListFeatureTagsResponse>>;\n    public listFeatureTags(requestParameters: ListFeatureTagsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const name = requestParameters.name;\n        const page_at_name = requestParameters.page_at_name;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name, 'name');\n        }\n        if (page_at_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_name, 'page_at_name');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListFeatureTagsResponse>(`${this.configuration.basePath}/v1/feature_tags`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListFeatureTagsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListFeatureTagsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * update a feature tag\n     * update a feature tag\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceFeatureTag(requestParameters: ReplaceFeatureTagRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<FeatureTag>;\n    public replaceFeatureTag(requestParameters: ReplaceFeatureTagRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<FeatureTag>>;\n    public replaceFeatureTag(requestParameters: ReplaceFeatureTagRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<FeatureTag>>;\n    public replaceFeatureTag(requestParameters: ReplaceFeatureTagRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const feature_tag_name = requestParameters.feature_tag_name;\n        if (feature_tag_name === null || feature_tag_name === undefined) {\n            throw new Error('Required parameter feature_tag_name was null or undefined when calling replaceFeatureTag.');\n        }\n        const FeatureTag = requestParameters.FeatureTag;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_FeatureTag>(`${this.configuration.basePath}/v1/feature_tags/${encodeURIComponent(String(feature_tag_name))}`,\n                    FeatureTag,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _FeatureTag) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new FeatureTagImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _ClearFileAssociationRequest, ClearFileAssociationRequest, ClearFileAssociationRequestImpl } from '../model/models';\nimport { _ClearFileAssociationResponse, ClearFileAssociationResponse, ClearFileAssociationResponseImpl } from '../model/models';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _FileAssociation, FileAssociation, FileAssociationImpl } from '../model/models';\nimport { _FileSummary, FileSummary, FileSummaryImpl } from '../model/models';\nimport { _FileTemplate, FileTemplate, FileTemplateImpl } from '../model/models';\nimport { _FileTemplateRenderRequest, FileTemplateRenderRequest, FileTemplateRenderRequestImpl } from '../model/models';\nimport { _FileVisibility, FileVisibility, FileVisibilityImpl } from '../model/models';\nimport { _ListFileAssociationsResponse, ListFileAssociationsResponse, ListFileAssociationsResponseImpl } from '../model/models';\nimport { _ListFileTemplatesResponse, ListFileTemplatesResponse, ListFileTemplatesResponseImpl } from '../model/models';\nimport { _ListFilesResponse, ListFilesResponse, ListFilesResponseImpl } from '../model/models';\nimport { _ListPublicFileOrgLinksResponse, ListPublicFileOrgLinksResponse, ListPublicFileOrgLinksResponseImpl } from '../model/models';\nimport { _ModelFile, ModelFile, ModelFileImpl } from '../model/models';\nimport { _ObjectOperStatus, ObjectOperStatus, ObjectOperStatusImpl } from '../model/models';\nimport { _PublicFileOrgLink, PublicFileOrgLink, PublicFileOrgLinkImpl } from '../model/models';\nimport { _StorageRegion, StorageRegion, StorageRegionImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    FilesServiceInterface,\n    AddFileRequestParams,\n    CreateFileAssociationRequestParams,\n    CreateFileAssociationClearTaskRequestParams,\n    CreateFileTemplateRequestParams,\n    CreatePublicFileOrgLinkRequestParams,\n    DeleteFileRequestParams,\n    DeleteFileAssociationRequestParams,\n    DeleteFileTemplateRequestParams,\n    DeletePublicFileOrgLinkRequestParams,\n    GetDownloadRequestParams,\n    GetDownloadPublicRequestParams,\n    GetFileRequestParams,\n    GetFileAssociationRequestParams,\n    GetFileTemplateRequestParams,\n    GetPublicFileOrgLinkRequestParams,\n    ListFileAssociationsRequestParams,\n    ListFileTemplatesRequestParams,\n    ListFilesRequestParams,\n    ListPublicFileOrgLinksRequestParams,\n    RenderFileTemplateRequestParams,\n    ReplaceFileRequestParams,\n    ReplaceFileTemplateRequestParams,\n    ReplacePublicFileOrgLinkRequestParams,\n    ReuploadFileRequestParams\n} from './files.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class FilesService implements FilesServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n    /**\n     * @param consumes string[] mime-types\n     * @return true: consumes contains 'multipart/form-data', false: otherwise\n     */\n    private canConsumeForm(consumes: string[]): boolean {\n        const form = 'multipart/form-data';\n        for (const consume of consumes) {\n            if (form === consume) {\n                return true;\n            }\n        }\n        return false;\n    }\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * upload a file\n     * Upload a file\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public addFile(requestParameters: AddFileRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<FileSummary>;\n    public addFile(requestParameters: AddFileRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<FileSummary>>;\n    public addFile(requestParameters: AddFileRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<FileSummary>>;\n    public addFile(requestParameters: AddFileRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const name = requestParameters.name;\n        if (name === null || name === undefined) {\n            throw new Error('Required parameter name was null or undefined when calling addFile.');\n        }\n        const file_zip = requestParameters.file_zip;\n        if (file_zip === null || file_zip === undefined) {\n            throw new Error('Required parameter file_zip was null or undefined when calling addFile.');\n        }\n        const org_id = requestParameters.org_id;\n        const tag = requestParameters.tag;\n        const label = requestParameters.label;\n        const region = requestParameters.region;\n        const visibility = requestParameters.visibility;\n        const md5_hash = requestParameters.md5_hash;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'multipart/form-data'\n        ];\n\n        const canConsumeForm = this.canConsumeForm(consumes);\n\n        let formParams: { append(param: string, value: any): any; };\n        let useForm = false;\n        let convertFormParamsToString = false;\n        // use FormData to transmit files using content-type \"multipart/form-data\"\n        // see https://stackoverflow.com/questions/4007969/application-x-www-form-urlencoded-or-multipart-form-data\n        useForm = canConsumeForm;\n        if (useForm) {\n            formParams = new FormData();\n        } else {\n            formParams = new HttpParams({encoder: this.encoder});\n        }\n\n        if (org_id !== undefined) {\n            formParams = formParams.append('org_id', <any>org_id) as any || formParams;\n        }\n        if (tag !== undefined) {\n            formParams = formParams.append('tag', <any>tag) as any || formParams;\n        }\n        if (label !== undefined) {\n            formParams = formParams.append('label', <any>label) as any || formParams;\n        }\n        if (region !== undefined) {\n            formParams = formParams.append('region', <any>region) as any || formParams;\n        }\n        if (name !== undefined) {\n            formParams = formParams.append('name', <any>name) as any || formParams;\n        }\n        if (visibility !== undefined) {\n            formParams = formParams.append('visibility', <any>visibility) as any || formParams;\n        }\n        if (md5_hash !== undefined) {\n            formParams = formParams.append('md5_hash', <any>md5_hash) as any || formParams;\n        }\n        if (file_zip !== undefined) {\n            formParams = formParams.append('file_zip', <any>file_zip) as any || formParams;\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_FileSummary>(`${this.configuration.basePath}/v1/files`,\n                    convertFormParamsToString ? formParams.toString() : formParams,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _FileSummary) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new FileSummaryImpl(response)\n            })\n        );\n    }\n\n    /**\n     * associate a file with an object\n     * associate a file with an objet\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createFileAssociation(requestParameters: CreateFileAssociationRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<FileAssociation>;\n    public createFileAssociation(requestParameters: CreateFileAssociationRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<FileAssociation>>;\n    public createFileAssociation(requestParameters: CreateFileAssociationRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<FileAssociation>>;\n    public createFileAssociation(requestParameters: CreateFileAssociationRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const FileAssociation = requestParameters.FileAssociation;\n        if (FileAssociation === null || FileAssociation === undefined) {\n            throw new Error('Required parameter FileAssociation was null or undefined when calling createFileAssociation.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_FileAssociation>(`${this.configuration.basePath}/v1/file_associations`,\n                    FileAssociation,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _FileAssociation) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new FileAssociationImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Cleans up file associations\n     * Cleans up file associations, potentially marking files for garbage collection\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createFileAssociationClearTask(requestParameters: CreateFileAssociationClearTaskRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ClearFileAssociationResponse>;\n    public createFileAssociationClearTask(requestParameters: CreateFileAssociationClearTaskRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ClearFileAssociationResponse>>;\n    public createFileAssociationClearTask(requestParameters: CreateFileAssociationClearTaskRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ClearFileAssociationResponse>>;\n    public createFileAssociationClearTask(requestParameters: CreateFileAssociationClearTaskRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const ClearFileAssociationRequest = requestParameters.ClearFileAssociationRequest;\n        if (ClearFileAssociationRequest === null || ClearFileAssociationRequest === undefined) {\n            throw new Error('Required parameter ClearFileAssociationRequest was null or undefined when calling createFileAssociationClearTask.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_ClearFileAssociationResponse>(`${this.configuration.basePath}/v1/file_association_clear`,\n                    ClearFileAssociationRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ClearFileAssociationResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ClearFileAssociationResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Add a file template\n     * Adds a new file template. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createFileTemplate(requestParameters: CreateFileTemplateRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<FileTemplate>;\n    public createFileTemplate(requestParameters: CreateFileTemplateRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<FileTemplate>>;\n    public createFileTemplate(requestParameters: CreateFileTemplateRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<FileTemplate>>;\n    public createFileTemplate(requestParameters: CreateFileTemplateRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const FileTemplate = requestParameters.FileTemplate;\n        if (FileTemplate === null || FileTemplate === undefined) {\n            throw new Error('Required parameter FileTemplate was null or undefined when calling createFileTemplate.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_FileTemplate>(`${this.configuration.basePath}/v1/file_templates`,\n                    FileTemplate,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _FileTemplate) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new FileTemplateImpl(response)\n            })\n        );\n    }\n\n    /**\n     * link public files based on org\n     * links public files based on organisation and tag\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createPublicFileOrgLink(requestParameters: CreatePublicFileOrgLinkRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<PublicFileOrgLink>;\n    public createPublicFileOrgLink(requestParameters: CreatePublicFileOrgLinkRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<PublicFileOrgLink>>;\n    public createPublicFileOrgLink(requestParameters: CreatePublicFileOrgLinkRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<PublicFileOrgLink>>;\n    public createPublicFileOrgLink(requestParameters: CreatePublicFileOrgLinkRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const PublicFileOrgLink = requestParameters.PublicFileOrgLink;\n        if (PublicFileOrgLink === null || PublicFileOrgLink === undefined) {\n            throw new Error('Required parameter PublicFileOrgLink was null or undefined when calling createPublicFileOrgLink.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_PublicFileOrgLink>(`${this.configuration.basePath}/v1/public_file_org_links`,\n                    PublicFileOrgLink,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _PublicFileOrgLink) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new PublicFileOrgLinkImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a File\n     * Delete a File\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteFile(requestParameters: DeleteFileRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteFile(requestParameters: DeleteFileRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteFile(requestParameters: DeleteFileRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteFile(requestParameters: DeleteFileRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const file_id = requestParameters.file_id;\n        if (file_id === null || file_id === undefined) {\n            throw new Error('Required parameter file_id was null or undefined when calling deleteFile.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/files/${encodeURIComponent(String(file_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Remove an association from a file\n     * Remove an association from a file\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteFileAssociation(requestParameters: DeleteFileAssociationRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteFileAssociation(requestParameters: DeleteFileAssociationRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteFileAssociation(requestParameters: DeleteFileAssociationRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteFileAssociation(requestParameters: DeleteFileAssociationRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const file_association_id = requestParameters.file_association_id;\n        if (file_association_id === null || file_association_id === undefined) {\n            throw new Error('Required parameter file_association_id was null or undefined when calling deleteFileAssociation.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/file_associations/${encodeURIComponent(String(file_association_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a file template\n     * Delete a file template\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteFileTemplate(requestParameters: DeleteFileTemplateRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteFileTemplate(requestParameters: DeleteFileTemplateRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteFileTemplate(requestParameters: DeleteFileTemplateRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteFileTemplate(requestParameters: DeleteFileTemplateRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const file_template_id = requestParameters.file_template_id;\n        if (file_template_id === null || file_template_id === undefined) {\n            throw new Error('Required parameter file_template_id was null or undefined when calling deleteFileTemplate.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/file_templates/${encodeURIComponent(String(file_template_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Remove a link from an org\n     * Remove a link from an org. Note that link_org_id and org_id are alises for one another in this query. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deletePublicFileOrgLink(requestParameters: DeletePublicFileOrgLinkRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deletePublicFileOrgLink(requestParameters: DeletePublicFileOrgLinkRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deletePublicFileOrgLink(requestParameters: DeletePublicFileOrgLinkRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deletePublicFileOrgLink(requestParameters: DeletePublicFileOrgLinkRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const public_file_org_link_id = requestParameters.public_file_org_link_id;\n        if (public_file_org_link_id === null || public_file_org_link_id === undefined) {\n            throw new Error('Required parameter public_file_org_link_id was null or undefined when calling deletePublicFileOrgLink.');\n        }\n        const link_org_id = requestParameters.link_org_id;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (link_org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>link_org_id, 'link_org_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/public_file_org_links/${encodeURIComponent(String(public_file_org_link_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Download File\n     * Download File\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getDownload(requestParameters: GetDownloadRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/octet-stream'}): Observable<Blob>;\n    public getDownload(requestParameters: GetDownloadRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/octet-stream'}): Observable<HttpResponse<Blob>>;\n    public getDownload(requestParameters: GetDownloadRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/octet-stream'}): Observable<HttpEvent<Blob>>;\n    public getDownload(requestParameters: GetDownloadRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/octet-stream'}): Observable<any> {\n        const file_id = requestParameters.file_id;\n        if (file_id === null || file_id === undefined) {\n            throw new Error('Required parameter file_id was null or undefined when calling getDownload.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/octet-stream'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get(`${this.configuration.basePath}/v1/files_download/${encodeURIComponent(String(file_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: \"blob\",\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Download public file\n     * Download public file\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getDownloadPublic(requestParameters: GetDownloadPublicRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/octet-stream' | 'application/gzip'}): Observable<Blob>;\n    public getDownloadPublic(requestParameters: GetDownloadPublicRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/octet-stream' | 'application/gzip'}): Observable<HttpResponse<Blob>>;\n    public getDownloadPublic(requestParameters: GetDownloadPublicRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/octet-stream' | 'application/gzip'}): Observable<HttpEvent<Blob>>;\n    public getDownloadPublic(requestParameters: GetDownloadPublicRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/octet-stream' | 'application/gzip'}): Observable<any> {\n        const subdomain = requestParameters.subdomain;\n        const label = requestParameters.label;\n        const tag = requestParameters.tag;\n        const file_in_zip = requestParameters.file_in_zip;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (subdomain !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>subdomain, 'subdomain');\n        }\n        if (label !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>label, 'label');\n        }\n        if (tag !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>tag, 'tag');\n        }\n        if (file_in_zip !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>file_in_zip, 'file_in_zip');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/octet-stream',\n                'application/gzip'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        return of(undefined).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get(`${this.configuration.basePath}/v1/files_public`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: \"blob\",\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get File metadata\n     * Get File metadata\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getFile(requestParameters: GetFileRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<FileSummary>;\n    public getFile(requestParameters: GetFileRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<FileSummary>>;\n    public getFile(requestParameters: GetFileRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<FileSummary>>;\n    public getFile(requestParameters: GetFileRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const file_id = requestParameters.file_id;\n        if (file_id === null || file_id === undefined) {\n            throw new Error('Required parameter file_id was null or undefined when calling getFile.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_FileSummary>(`${this.configuration.basePath}/v1/files/${encodeURIComponent(String(file_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _FileSummary) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new FileSummaryImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a file association\n     * Get a file association\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getFileAssociation(requestParameters: GetFileAssociationRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<FileAssociation>;\n    public getFileAssociation(requestParameters: GetFileAssociationRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<FileAssociation>>;\n    public getFileAssociation(requestParameters: GetFileAssociationRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<FileAssociation>>;\n    public getFileAssociation(requestParameters: GetFileAssociationRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const file_association_id = requestParameters.file_association_id;\n        if (file_association_id === null || file_association_id === undefined) {\n            throw new Error('Required parameter file_association_id was null or undefined when calling getFileAssociation.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_FileAssociation>(`${this.configuration.basePath}/v1/file_associations/${encodeURIComponent(String(file_association_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _FileAssociation) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new FileAssociationImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a file template\n     * Get a file template\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getFileTemplate(requestParameters: GetFileTemplateRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<FileTemplate>;\n    public getFileTemplate(requestParameters: GetFileTemplateRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<FileTemplate>>;\n    public getFileTemplate(requestParameters: GetFileTemplateRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<FileTemplate>>;\n    public getFileTemplate(requestParameters: GetFileTemplateRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const file_template_id = requestParameters.file_template_id;\n        if (file_template_id === null || file_template_id === undefined) {\n            throw new Error('Required parameter file_template_id was null or undefined when calling getFileTemplate.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_FileTemplate>(`${this.configuration.basePath}/v1/file_templates/${encodeURIComponent(String(file_template_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _FileTemplate) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new FileTemplateImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a public file org link\n     * Get a public file org link. Note that link_org_id and org_id are alises for one another in this query. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getPublicFileOrgLink(requestParameters: GetPublicFileOrgLinkRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<PublicFileOrgLink>;\n    public getPublicFileOrgLink(requestParameters: GetPublicFileOrgLinkRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<PublicFileOrgLink>>;\n    public getPublicFileOrgLink(requestParameters: GetPublicFileOrgLinkRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<PublicFileOrgLink>>;\n    public getPublicFileOrgLink(requestParameters: GetPublicFileOrgLinkRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const public_file_org_link_id = requestParameters.public_file_org_link_id;\n        if (public_file_org_link_id === null || public_file_org_link_id === undefined) {\n            throw new Error('Required parameter public_file_org_link_id was null or undefined when calling getPublicFileOrgLink.');\n        }\n        const link_org_id = requestParameters.link_org_id;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (link_org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>link_org_id, 'link_org_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_PublicFileOrgLink>(`${this.configuration.basePath}/v1/public_file_org_links/${encodeURIComponent(String(public_file_org_link_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _PublicFileOrgLink) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new PublicFileOrgLinkImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Query File Associations\n     * Query File Associations\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listFileAssociations(requestParameters: ListFileAssociationsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListFileAssociationsResponse>;\n    public listFileAssociations(requestParameters: ListFileAssociationsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListFileAssociationsResponse>>;\n    public listFileAssociations(requestParameters: ListFileAssociationsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListFileAssociationsResponse>>;\n    public listFileAssociations(requestParameters: ListFileAssociationsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const file_id = requestParameters.file_id;\n        const object_id = requestParameters.object_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (file_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>file_id, 'file_id');\n        }\n        if (object_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>object_id, 'object_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListFileAssociationsResponse>(`${this.configuration.basePath}/v1/file_associations`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListFileAssociationsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListFileAssociationsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all file templates\n     * List all file templates matching the provided query parameters. Perform keyset pagination by setting the page_at_id parameter to the id for the next page to fetch. Set it to &#x60;\\&quot;\\&quot;&#x60; to start from the beginning. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listFileTemplates(requestParameters: ListFileTemplatesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListFileTemplatesResponse>;\n    public listFileTemplates(requestParameters: ListFileTemplatesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListFileTemplatesResponse>>;\n    public listFileTemplates(requestParameters: ListFileTemplatesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListFileTemplatesResponse>>;\n    public listFileTemplates(requestParameters: ListFileTemplatesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const page_at_id = requestParameters.page_at_id;\n        const org_id = requestParameters.org_id;\n        const purpose = requestParameters.purpose;\n        const object_types = requestParameters.object_types;\n        const object_ids = requestParameters.object_ids;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (purpose !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>purpose, 'purpose');\n        }\n        if (object_types) {\n            object_types.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'object_types');\n            })\n        }\n        if (object_ids) {\n            object_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'object_ids');\n            })\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListFileTemplatesResponse>(`${this.configuration.basePath}/v1/file_templates`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListFileTemplatesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListFileTemplatesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Query Files\n     * Query Files\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listFiles(requestParameters: ListFilesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListFilesResponse>;\n    public listFiles(requestParameters: ListFilesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListFilesResponse>>;\n    public listFiles(requestParameters: ListFilesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListFilesResponse>>;\n    public listFiles(requestParameters: ListFilesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const user_id = requestParameters.user_id;\n        const tag = requestParameters.tag;\n        const file_association_id = requestParameters.file_association_id;\n        const object_oper_status = requestParameters.object_oper_status;\n        const has_been_associated = requestParameters.has_been_associated;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (tag !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>tag, 'tag');\n        }\n        if (file_association_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>file_association_id, 'file_association_id');\n        }\n        if (object_oper_status !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>object_oper_status, 'object_oper_status');\n        }\n        if (has_been_associated !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>has_been_associated, 'has_been_associated');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListFilesResponse>(`${this.configuration.basePath}/v1/files`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListFilesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListFilesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Query Public File Org Links\n     * Query Public File Org Links. Note that link_org_id and org_id are alises for one another in this query. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listPublicFileOrgLinks(requestParameters: ListPublicFileOrgLinksRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListPublicFileOrgLinksResponse>;\n    public listPublicFileOrgLinks(requestParameters: ListPublicFileOrgLinksRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListPublicFileOrgLinksResponse>>;\n    public listPublicFileOrgLinks(requestParameters: ListPublicFileOrgLinksRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListPublicFileOrgLinksResponse>>;\n    public listPublicFileOrgLinks(requestParameters: ListPublicFileOrgLinksRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const link_org_id = requestParameters.link_org_id;\n        const org_id = requestParameters.org_id;\n        const tag = requestParameters.tag;\n        const page_at_id = requestParameters.page_at_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (link_org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>link_org_id, 'link_org_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (tag !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>tag, 'tag');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListPublicFileOrgLinksResponse>(`${this.configuration.basePath}/v1/public_file_org_links`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListPublicFileOrgLinksResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListPublicFileOrgLinksResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Render a file template\n     * Renders a file template, applying the static and request arguments to the contents of the template. If the backing file does not exist, this will return a 404 indicating so. If the input is missing a required parameter, this will return a 400. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public renderFileTemplate(requestParameters: RenderFileTemplateRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: '*/*' | 'application/json'}): Observable<Blob>;\n    public renderFileTemplate(requestParameters: RenderFileTemplateRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: '*/*' | 'application/json'}): Observable<HttpResponse<Blob>>;\n    public renderFileTemplate(requestParameters: RenderFileTemplateRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: '*/*' | 'application/json'}): Observable<HttpEvent<Blob>>;\n    public renderFileTemplate(requestParameters: RenderFileTemplateRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: '*/*' | 'application/json'}): Observable<any> {\n        const file_template_id = requestParameters.file_template_id;\n        if (file_template_id === null || file_template_id === undefined) {\n            throw new Error('Required parameter file_template_id was null or undefined when calling renderFileTemplate.');\n        }\n        const FileTemplateRenderRequest = requestParameters.FileTemplateRenderRequest;\n        if (FileTemplateRenderRequest === null || FileTemplateRenderRequest === undefined) {\n            throw new Error('Required parameter FileTemplateRenderRequest was null or undefined when calling renderFileTemplate.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                '*/*',\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post(`${this.configuration.basePath}/v1/file_templates/${encodeURIComponent(String(file_template_id))}/render`,\n                    FileTemplateRenderRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: \"blob\",\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Update a file\n     * Update a file\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceFile(requestParameters: ReplaceFileRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<FileSummary>;\n    public replaceFile(requestParameters: ReplaceFileRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<FileSummary>>;\n    public replaceFile(requestParameters: ReplaceFileRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<FileSummary>>;\n    public replaceFile(requestParameters: ReplaceFileRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const file_id = requestParameters.file_id;\n        if (file_id === null || file_id === undefined) {\n            throw new Error('Required parameter file_id was null or undefined when calling replaceFile.');\n        }\n        const ModelFile = requestParameters.ModelFile;\n        if (ModelFile === null || ModelFile === undefined) {\n            throw new Error('Required parameter ModelFile was null or undefined when calling replaceFile.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_FileSummary>(`${this.configuration.basePath}/v1/files/${encodeURIComponent(String(file_id))}`,\n                    ModelFile,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _FileSummary) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new FileSummaryImpl(response)\n            })\n        );\n    }\n\n    /**\n     * update a file template\n     * update a file template\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceFileTemplate(requestParameters: ReplaceFileTemplateRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<FileTemplate>;\n    public replaceFileTemplate(requestParameters: ReplaceFileTemplateRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<FileTemplate>>;\n    public replaceFileTemplate(requestParameters: ReplaceFileTemplateRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<FileTemplate>>;\n    public replaceFileTemplate(requestParameters: ReplaceFileTemplateRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const file_template_id = requestParameters.file_template_id;\n        if (file_template_id === null || file_template_id === undefined) {\n            throw new Error('Required parameter file_template_id was null or undefined when calling replaceFileTemplate.');\n        }\n        const FileTemplate = requestParameters.FileTemplate;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_FileTemplate>(`${this.configuration.basePath}/v1/file_templates/${encodeURIComponent(String(file_template_id))}`,\n                    FileTemplate,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _FileTemplate) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new FileTemplateImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Replace a public file org link\n     * Replace a public file org link\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replacePublicFileOrgLink(requestParameters: ReplacePublicFileOrgLinkRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<PublicFileOrgLink>;\n    public replacePublicFileOrgLink(requestParameters: ReplacePublicFileOrgLinkRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<PublicFileOrgLink>>;\n    public replacePublicFileOrgLink(requestParameters: ReplacePublicFileOrgLinkRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<PublicFileOrgLink>>;\n    public replacePublicFileOrgLink(requestParameters: ReplacePublicFileOrgLinkRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const public_file_org_link_id = requestParameters.public_file_org_link_id;\n        if (public_file_org_link_id === null || public_file_org_link_id === undefined) {\n            throw new Error('Required parameter public_file_org_link_id was null or undefined when calling replacePublicFileOrgLink.');\n        }\n        const PublicFileOrgLink = requestParameters.PublicFileOrgLink;\n        if (PublicFileOrgLink === null || PublicFileOrgLink === undefined) {\n            throw new Error('Required parameter PublicFileOrgLink was null or undefined when calling replacePublicFileOrgLink.');\n        }\n        const link_org_id = requestParameters.link_org_id;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (link_org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>link_org_id, 'link_org_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_PublicFileOrgLink>(`${this.configuration.basePath}/v1/public_file_org_links/${encodeURIComponent(String(public_file_org_link_id))}`,\n                    PublicFileOrgLink,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _PublicFileOrgLink) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new PublicFileOrgLinkImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Upload a new version of a file\n     * Replace a file entirely by uploading new contents\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public reuploadFile(requestParameters: ReuploadFileRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<FileSummary>;\n    public reuploadFile(requestParameters: ReuploadFileRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<FileSummary>>;\n    public reuploadFile(requestParameters: ReuploadFileRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<FileSummary>>;\n    public reuploadFile(requestParameters: ReuploadFileRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const file_id = requestParameters.file_id;\n        if (file_id === null || file_id === undefined) {\n            throw new Error('Required parameter file_id was null or undefined when calling reuploadFile.');\n        }\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling reuploadFile.');\n        }\n        const file_zip = requestParameters.file_zip;\n        if (file_zip === null || file_zip === undefined) {\n            throw new Error('Required parameter file_zip was null or undefined when calling reuploadFile.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'multipart/form-data'\n        ];\n\n        const canConsumeForm = this.canConsumeForm(consumes);\n\n        let formParams: { append(param: string, value: any): any; };\n        let useForm = false;\n        let convertFormParamsToString = false;\n        // use FormData to transmit files using content-type \"multipart/form-data\"\n        // see https://stackoverflow.com/questions/4007969/application-x-www-form-urlencoded-or-multipart-form-data\n        useForm = canConsumeForm;\n        if (useForm) {\n            formParams = new FormData();\n        } else {\n            formParams = new HttpParams({encoder: this.encoder});\n        }\n\n        if (org_id !== undefined) {\n            formParams = formParams.append('org_id', <any>org_id) as any || formParams;\n        }\n        if (file_zip !== undefined) {\n            formParams = formParams.append('file_zip', <any>file_zip) as any || formParams;\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_FileSummary>(`${this.configuration.basePath}/v1/files/${encodeURIComponent(String(file_id))}/upload`,\n                    convertFormParamsToString ? formParams.toString() : formParams,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _FileSummary) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new FileSummaryImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _AddGroupMemberRequest, AddGroupMemberRequest, AddGroupMemberRequestImpl } from '../model/models';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _Group, Group, GroupImpl } from '../model/models';\nimport { _ListGroupsResponse, ListGroupsResponse, ListGroupsResponseImpl } from '../model/models';\nimport { _UpstreamGroupReconcile, UpstreamGroupReconcile, UpstreamGroupReconcileImpl } from '../model/models';\nimport { _UpstreamGroupReconcileResponse, UpstreamGroupReconcileResponse, UpstreamGroupReconcileResponseImpl } from '../model/models';\nimport { _User, User, UserImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    GroupsServiceInterface,\n    AddGroupMemberRequestParams,\n    CreateGroupRequestParams,\n    CreateUpstreamGroupReconcileRequestParams,\n    CreateUpstreamGroupReconcileSimRequestParams,\n    DeleteGroupRequestParams,\n    DeleteGroupMemberRequestParams,\n    GetGroupRequestParams,\n    ListGroupsRequestParams,\n    ReplaceGroupRequestParams\n} from './groups.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class GroupsService implements GroupsServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Add a group member\n     * Add a group member\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public addGroupMember(requestParameters: AddGroupMemberRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<User>;\n    public addGroupMember(requestParameters: AddGroupMemberRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<User>>;\n    public addGroupMember(requestParameters: AddGroupMemberRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<User>>;\n    public addGroupMember(requestParameters: AddGroupMemberRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const group_id = requestParameters.group_id;\n        if (group_id === null || group_id === undefined) {\n            throw new Error('Required parameter group_id was null or undefined when calling addGroupMember.');\n        }\n        const AddGroupMemberRequest = requestParameters.AddGroupMemberRequest;\n        if (AddGroupMemberRequest === null || AddGroupMemberRequest === undefined) {\n            throw new Error('Required parameter AddGroupMemberRequest was null or undefined when calling addGroupMember.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_User>(`${this.configuration.basePath}/v1/groups/${encodeURIComponent(String(group_id))}/members`,\n                    AddGroupMemberRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _User) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UserImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a group\n     * Create a group\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createGroup(requestParameters: CreateGroupRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Group>;\n    public createGroup(requestParameters: CreateGroupRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Group>>;\n    public createGroup(requestParameters: CreateGroupRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Group>>;\n    public createGroup(requestParameters: CreateGroupRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const Group = requestParameters.Group;\n        if (Group === null || Group === undefined) {\n            throw new Error('Required parameter Group was null or undefined when calling createGroup.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Group>(`${this.configuration.basePath}/v1/groups`,\n                    Group,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Group) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new GroupImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Reconcile a user\\&#39;s groups based on the user\\&#39;s upstream group membership\n     * Reconcile a user\\&#39;s groups based on the user\\&#39;s upstream group membership\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createUpstreamGroupReconcile(requestParameters: CreateUpstreamGroupReconcileRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UpstreamGroupReconcileResponse>;\n    public createUpstreamGroupReconcile(requestParameters: CreateUpstreamGroupReconcileRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UpstreamGroupReconcileResponse>>;\n    public createUpstreamGroupReconcile(requestParameters: CreateUpstreamGroupReconcileRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UpstreamGroupReconcileResponse>>;\n    public createUpstreamGroupReconcile(requestParameters: CreateUpstreamGroupReconcileRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const UpstreamGroupReconcile = requestParameters.UpstreamGroupReconcile;\n        if (UpstreamGroupReconcile === null || UpstreamGroupReconcile === undefined) {\n            throw new Error('Required parameter UpstreamGroupReconcile was null or undefined when calling createUpstreamGroupReconcile.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_UpstreamGroupReconcileResponse>(`${this.configuration.basePath}/v1/groups/reconcile_upstream_groups`,\n                    UpstreamGroupReconcile,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UpstreamGroupReconcileResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UpstreamGroupReconcileResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get the set of groups to reconcile based on the user\\&#39;s upstream group membership\n     * Get the set of groups to reconcile based on the user\\&#39;s upstream group membership This indicates what reconciliatory action will be taken if this endpoint is invoked via a POST. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createUpstreamGroupReconcileSim(requestParameters: CreateUpstreamGroupReconcileSimRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UpstreamGroupReconcileResponse>;\n    public createUpstreamGroupReconcileSim(requestParameters: CreateUpstreamGroupReconcileSimRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UpstreamGroupReconcileResponse>>;\n    public createUpstreamGroupReconcileSim(requestParameters: CreateUpstreamGroupReconcileSimRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UpstreamGroupReconcileResponse>>;\n    public createUpstreamGroupReconcileSim(requestParameters: CreateUpstreamGroupReconcileSimRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const UpstreamGroupReconcile = requestParameters.UpstreamGroupReconcile;\n        if (UpstreamGroupReconcile === null || UpstreamGroupReconcile === undefined) {\n            throw new Error('Required parameter UpstreamGroupReconcile was null or undefined when calling createUpstreamGroupReconcileSim.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_UpstreamGroupReconcileResponse>(`${this.configuration.basePath}/v1/groups/simulate_reconcile_upstream_groups`,\n                    UpstreamGroupReconcile,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UpstreamGroupReconcileResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UpstreamGroupReconcileResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a group\n     * Delete a group\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteGroup(requestParameters: DeleteGroupRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteGroup(requestParameters: DeleteGroupRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteGroup(requestParameters: DeleteGroupRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteGroup(requestParameters: DeleteGroupRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const group_id = requestParameters.group_id;\n        if (group_id === null || group_id === undefined) {\n            throw new Error('Required parameter group_id was null or undefined when calling deleteGroup.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/groups/${encodeURIComponent(String(group_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Remove a group member\n     * Remove a group member\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteGroupMember(requestParameters: DeleteGroupMemberRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteGroupMember(requestParameters: DeleteGroupMemberRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteGroupMember(requestParameters: DeleteGroupMemberRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteGroupMember(requestParameters: DeleteGroupMemberRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const group_id = requestParameters.group_id;\n        if (group_id === null || group_id === undefined) {\n            throw new Error('Required parameter group_id was null or undefined when calling deleteGroupMember.');\n        }\n        const member_id = requestParameters.member_id;\n        if (member_id === null || member_id === undefined) {\n            throw new Error('Required parameter member_id was null or undefined when calling deleteGroupMember.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/groups/${encodeURIComponent(String(group_id))}/members/${encodeURIComponent(String(member_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get a group\n     * Get a group\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getGroup(requestParameters: GetGroupRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Group>;\n    public getGroup(requestParameters: GetGroupRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Group>>;\n    public getGroup(requestParameters: GetGroupRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Group>>;\n    public getGroup(requestParameters: GetGroupRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const group_id = requestParameters.group_id;\n        if (group_id === null || group_id === undefined) {\n            throw new Error('Required parameter group_id was null or undefined when calling getGroup.');\n        }\n        const org_id = requestParameters.org_id;\n        const flatten_hierarchy = requestParameters.flatten_hierarchy;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (flatten_hierarchy !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>flatten_hierarchy, 'flatten_hierarchy');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Group>(`${this.configuration.basePath}/v1/groups/${encodeURIComponent(String(group_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Group) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new GroupImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all groups\n     * Get all groups\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listGroups(requestParameters: ListGroupsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListGroupsResponse>;\n    public listGroups(requestParameters: ListGroupsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListGroupsResponse>>;\n    public listGroups(requestParameters: ListGroupsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListGroupsResponse>>;\n    public listGroups(requestParameters: ListGroupsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const type = requestParameters.type;\n        const limit = requestParameters.limit;\n        const previous_email = requestParameters.previous_email;\n        const search_direction = requestParameters.search_direction;\n        const prefix_email_search = requestParameters.prefix_email_search;\n        const allow_partial_match = requestParameters.allow_partial_match;\n        const first_name = requestParameters.first_name;\n        const last_name = requestParameters.last_name;\n        const search_params = requestParameters.search_params;\n        const show_system_user = requestParameters.show_system_user;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (type) {\n            type.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'type');\n            })\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (previous_email !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>previous_email, 'previous_email');\n        }\n        if (search_direction !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>search_direction, 'search_direction');\n        }\n        if (prefix_email_search !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>prefix_email_search, 'prefix_email_search');\n        }\n        if (allow_partial_match !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>allow_partial_match, 'allow_partial_match');\n        }\n        if (first_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>first_name, 'first_name');\n        }\n        if (last_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>last_name, 'last_name');\n        }\n        if (search_params) {\n            search_params.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'search_params');\n            })\n        }\n        if (show_system_user !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>show_system_user, 'show_system_user');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListGroupsResponse>(`${this.configuration.basePath}/v1/groups`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListGroupsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListGroupsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * update a group\n     * update a group\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceGroup(requestParameters: ReplaceGroupRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Group>;\n    public replaceGroup(requestParameters: ReplaceGroupRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Group>>;\n    public replaceGroup(requestParameters: ReplaceGroupRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Group>>;\n    public replaceGroup(requestParameters: ReplaceGroupRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const group_id = requestParameters.group_id;\n        if (group_id === null || group_id === undefined) {\n            throw new Error('Required parameter group_id was null or undefined when calling replaceGroup.');\n        }\n        const Group = requestParameters.Group;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_Group>(`${this.configuration.basePath}/v1/groups/${encodeURIComponent(String(group_id))}`,\n                    Group,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Group) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new GroupImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _Host, Host, HostImpl } from '../model/models';\nimport { _HostBundle, HostBundle, HostBundleImpl } from '../model/models';\nimport { _HostLabel, HostLabel, HostLabelImpl } from '../model/models';\nimport { _ListHost, ListHost, ListHostImpl } from '../model/models';\nimport { _ListHostBundle, ListHostBundle, ListHostBundleImpl } from '../model/models';\nimport { _ListHostLabel, ListHostLabel, ListHostLabelImpl } from '../model/models';\nimport { _ListHostOrg, ListHostOrg, ListHostOrgImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    HostsServiceInterface,\n    AddHostRequestParams,\n    AddHostBundleRequestParams,\n    AddHostLabelRequestParams,\n    DeleteHostRequestParams,\n    DeleteHostBundleRequestParams,\n    DeleteHostLabelRequestParams,\n    GetHostRequestParams,\n    GetHostBundleRequestParams,\n    GetHostLabelRequestParams,\n    ListHostBundlesRequestParams,\n    ListHostLabelsRequestParams,\n    ListHostOrgsRequestParams,\n    ListHostsRequestParams,\n    ReplaceHostRequestParams,\n    ReplaceHostBundleRequestParams\n} from './hosts.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class HostsService implements HostsServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Creates a Host\n     * Creates a Host \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public addHost(requestParameters: AddHostRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Host>;\n    public addHost(requestParameters: AddHostRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Host>>;\n    public addHost(requestParameters: AddHostRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Host>>;\n    public addHost(requestParameters: AddHostRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const Host = requestParameters.Host;\n        if (Host === null || Host === undefined) {\n            throw new Error('Required parameter Host was null or undefined when calling addHost.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Host>(`${this.configuration.basePath}/v1/hosts`,\n                    Host,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Host) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new HostImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Creates a HostBundle\n     * Creates a HostBundle \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public addHostBundle(requestParameters: AddHostBundleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HostBundle>;\n    public addHostBundle(requestParameters: AddHostBundleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<HostBundle>>;\n    public addHostBundle(requestParameters: AddHostBundleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<HostBundle>>;\n    public addHostBundle(requestParameters: AddHostBundleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const HostBundle = requestParameters.HostBundle;\n        if (HostBundle === null || HostBundle === undefined) {\n            throw new Error('Required parameter HostBundle was null or undefined when calling addHostBundle.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_HostBundle>(`${this.configuration.basePath}/v1/host_bundles`,\n                    HostBundle,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _HostBundle) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new HostBundleImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Creates a HostLabel\n     * Creates a HostLabel \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public addHostLabel(requestParameters: AddHostLabelRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HostLabel>;\n    public addHostLabel(requestParameters: AddHostLabelRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<HostLabel>>;\n    public addHostLabel(requestParameters: AddHostLabelRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<HostLabel>>;\n    public addHostLabel(requestParameters: AddHostLabelRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const HostLabel = requestParameters.HostLabel;\n        if (HostLabel === null || HostLabel === undefined) {\n            throw new Error('Required parameter HostLabel was null or undefined when calling addHostLabel.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_HostLabel>(`${this.configuration.basePath}/v1/host_labels`,\n                    HostLabel,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _HostLabel) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new HostLabelImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a Host\n     * Delete a Host\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteHost(requestParameters: DeleteHostRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteHost(requestParameters: DeleteHostRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteHost(requestParameters: DeleteHostRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteHost(requestParameters: DeleteHostRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const host_id = requestParameters.host_id;\n        if (host_id === null || host_id === undefined) {\n            throw new Error('Required parameter host_id was null or undefined when calling deleteHost.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/hosts/${encodeURIComponent(String(host_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a HostBundle\n     * Delete a HostBundle\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteHostBundle(requestParameters: DeleteHostBundleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteHostBundle(requestParameters: DeleteHostBundleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteHostBundle(requestParameters: DeleteHostBundleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteHostBundle(requestParameters: DeleteHostBundleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const bundle = requestParameters.bundle;\n        if (bundle === null || bundle === undefined) {\n            throw new Error('Required parameter bundle was null or undefined when calling deleteHostBundle.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/host_bundles/${encodeURIComponent(String(bundle))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a HostLabel\n     * Delete a HostLabel\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteHostLabel(requestParameters: DeleteHostLabelRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteHostLabel(requestParameters: DeleteHostLabelRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteHostLabel(requestParameters: DeleteHostLabelRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteHostLabel(requestParameters: DeleteHostLabelRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const label = requestParameters.label;\n        if (label === null || label === undefined) {\n            throw new Error('Required parameter label was null or undefined when calling deleteHostLabel.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/host_labels/${encodeURIComponent(String(label))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get a Host\n     * Get a Host\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getHost(requestParameters: GetHostRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Host>;\n    public getHost(requestParameters: GetHostRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Host>>;\n    public getHost(requestParameters: GetHostRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Host>>;\n    public getHost(requestParameters: GetHostRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const host_id = requestParameters.host_id;\n        if (host_id === null || host_id === undefined) {\n            throw new Error('Required parameter host_id was null or undefined when calling getHost.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Host>(`${this.configuration.basePath}/v1/hosts/${encodeURIComponent(String(host_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Host) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new HostImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a HostBundle\n     * Get a HostBundle\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getHostBundle(requestParameters: GetHostBundleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HostBundle>;\n    public getHostBundle(requestParameters: GetHostBundleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<HostBundle>>;\n    public getHostBundle(requestParameters: GetHostBundleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<HostBundle>>;\n    public getHostBundle(requestParameters: GetHostBundleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const bundle = requestParameters.bundle;\n        if (bundle === null || bundle === undefined) {\n            throw new Error('Required parameter bundle was null or undefined when calling getHostBundle.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_HostBundle>(`${this.configuration.basePath}/v1/host_bundles/${encodeURIComponent(String(bundle))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _HostBundle) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new HostBundleImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a HostLabel\n     * Get a HostLabel\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getHostLabel(requestParameters: GetHostLabelRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HostLabel>;\n    public getHostLabel(requestParameters: GetHostLabelRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<HostLabel>>;\n    public getHostLabel(requestParameters: GetHostLabelRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<HostLabel>>;\n    public getHostLabel(requestParameters: GetHostLabelRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const label = requestParameters.label;\n        if (label === null || label === undefined) {\n            throw new Error('Required parameter label was null or undefined when calling getHostLabel.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_HostLabel>(`${this.configuration.basePath}/v1/host_labels/${encodeURIComponent(String(label))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _HostLabel) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new HostLabelImpl(response)\n            })\n        );\n    }\n\n    /**\n     * list HostBundle\n     * List HostBundle \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listHostBundles(requestParameters: ListHostBundlesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListHostBundle>;\n    public listHostBundles(requestParameters: ListHostBundlesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListHostBundle>>;\n    public listHostBundles(requestParameters: ListHostBundlesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListHostBundle>>;\n    public listHostBundles(requestParameters: ListHostBundlesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListHostBundle>(`${this.configuration.basePath}/v1/host_bundles`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListHostBundle) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListHostBundleImpl(response)\n            })\n        );\n    }\n\n    /**\n     * list HostLabel\n     * List HostLabel \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listHostLabels(requestParameters: ListHostLabelsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListHostLabel>;\n    public listHostLabels(requestParameters: ListHostLabelsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListHostLabel>>;\n    public listHostLabels(requestParameters: ListHostLabelsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListHostLabel>>;\n    public listHostLabels(requestParameters: ListHostLabelsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const label = requestParameters.label;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (label !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>label, 'label');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListHostLabel>(`${this.configuration.basePath}/v1/host_labels`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListHostLabel) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListHostLabelImpl(response)\n            })\n        );\n    }\n\n    /**\n     * list orgs that have available hosts\n     * List orgs that have available hosts \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listHostOrgs(requestParameters: ListHostOrgsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListHostOrg>;\n    public listHostOrgs(requestParameters: ListHostOrgsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListHostOrg>>;\n    public listHostOrgs(requestParameters: ListHostOrgsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListHostOrg>>;\n    public listHostOrgs(requestParameters: ListHostOrgsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListHostOrg>(`${this.configuration.basePath}/v1/hosts/orgs`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListHostOrg) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListHostOrgImpl(response)\n            })\n        );\n    }\n\n    /**\n     * list hosts\n     * List hosts \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listHosts(requestParameters: ListHostsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListHost>;\n    public listHosts(requestParameters: ListHostsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListHost>>;\n    public listHosts(requestParameters: ListHostsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListHost>>;\n    public listHosts(requestParameters: ListHostsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const label = requestParameters.label;\n        const page_at_id = requestParameters.page_at_id;\n        const hostname = requestParameters.hostname;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (label !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>label, 'label');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (hostname !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>hostname, 'hostname');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListHost>(`${this.configuration.basePath}/v1/hosts`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListHost) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListHostImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a Host\n     * Update a Host \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceHost(requestParameters: ReplaceHostRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Host>;\n    public replaceHost(requestParameters: ReplaceHostRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Host>>;\n    public replaceHost(requestParameters: ReplaceHostRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Host>>;\n    public replaceHost(requestParameters: ReplaceHostRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const host_id = requestParameters.host_id;\n        if (host_id === null || host_id === undefined) {\n            throw new Error('Required parameter host_id was null or undefined when calling replaceHost.');\n        }\n        const Host = requestParameters.Host;\n        if (Host === null || Host === undefined) {\n            throw new Error('Required parameter Host was null or undefined when calling replaceHost.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_Host>(`${this.configuration.basePath}/v1/hosts/${encodeURIComponent(String(host_id))}`,\n                    Host,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Host) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new HostImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a HostBundle\n     * Update a HostBundle \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceHostBundle(requestParameters: ReplaceHostBundleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HostBundle>;\n    public replaceHostBundle(requestParameters: ReplaceHostBundleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<HostBundle>>;\n    public replaceHostBundle(requestParameters: ReplaceHostBundleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<HostBundle>>;\n    public replaceHostBundle(requestParameters: ReplaceHostBundleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const bundle = requestParameters.bundle;\n        if (bundle === null || bundle === undefined) {\n            throw new Error('Required parameter bundle was null or undefined when calling replaceHostBundle.');\n        }\n        const HostBundle = requestParameters.HostBundle;\n        if (HostBundle === null || HostBundle === undefined) {\n            throw new Error('Required parameter HostBundle was null or undefined when calling replaceHostBundle.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_HostBundle>(`${this.configuration.basePath}/v1/host_bundles/${encodeURIComponent(String(bundle))}`,\n                    HostBundle,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _HostBundle) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new HostBundleImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _AdminStatus, AdminStatus, AdminStatusImpl } from '../model/models';\nimport { _BaseUpstreams, BaseUpstreams, BaseUpstreamsImpl } from '../model/models';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _Issuer, Issuer, IssuerImpl } from '../model/models';\nimport { _IssuerClient, IssuerClient, IssuerClientImpl } from '../model/models';\nimport { _ListIssuerClientsResponse, ListIssuerClientsResponse, ListIssuerClientsResponseImpl } from '../model/models';\nimport { _ListIssuerExtensionsResponse, ListIssuerExtensionsResponse, ListIssuerExtensionsResponseImpl } from '../model/models';\nimport { _ListIssuerRootsResponse, ListIssuerRootsResponse, ListIssuerRootsResponseImpl } from '../model/models';\nimport { _ListIssuerUpstreams, ListIssuerUpstreams, ListIssuerUpstreamsImpl } from '../model/models';\nimport { _ListPoliciesResponse, ListPoliciesResponse, ListPoliciesResponseImpl } from '../model/models';\nimport { _ListPolicyRulesResponse, ListPolicyRulesResponse, ListPolicyRulesResponseImpl } from '../model/models';\nimport { _ListUpstreamAliases, ListUpstreamAliases, ListUpstreamAliasesImpl } from '../model/models';\nimport { _ListUpstreamGroupMapping, ListUpstreamGroupMapping, ListUpstreamGroupMappingImpl } from '../model/models';\nimport { _ListWellKnownIssuerInfo, ListWellKnownIssuerInfo, ListWellKnownIssuerInfoImpl } from '../model/models';\nimport { _Policy, Policy, PolicyImpl } from '../model/models';\nimport { _PolicyRule, PolicyRule, PolicyRuleImpl } from '../model/models';\nimport { _PolicySpec, PolicySpec, PolicySpecImpl } from '../model/models';\nimport { _ResetPolicyRequest, ResetPolicyRequest, ResetPolicyRequestImpl } from '../model/models';\nimport { _ServiceAccountResetBody, ServiceAccountResetBody, ServiceAccountResetBodyImpl } from '../model/models';\nimport { _UpstreamAlias, UpstreamAlias, UpstreamAliasImpl } from '../model/models';\nimport { _UpstreamGroupMapping, UpstreamGroupMapping, UpstreamGroupMappingImpl } from '../model/models';\nimport { _WellKnownIssuerInfo, WellKnownIssuerInfo, WellKnownIssuerInfoImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    IssuersServiceInterface,\n    CreateClientRequestParams,\n    CreateIssuerRequestParams,\n    CreatePolicyRequestParams,\n    CreatePolicyRuleRequestParams,\n    CreateUpstreamAliasRequestParams,\n    CreateUpstreamGroupMappingRequestParams,\n    DeleteClientRequestParams,\n    DeletePolicyRequestParams,\n    DeletePolicyRuleRequestParams,\n    DeleteRootRequestParams,\n    DeleteUpstreamAliasRequestParams,\n    DeleteUpstreamGroupMappingRequestParams,\n    GetClientRequestParams,\n    GetIssuerRequestParams,\n    GetPolicyRequestParams,\n    GetPolicyRuleRequestParams,\n    GetRootRequestParams,\n    GetUpstreamAliasRequestParams,\n    GetUpstreamGroupMappingRequestParams,\n    GetUpstreamsRequestParams,\n    GetWellknownIssuerInfoRequestParams,\n    ListClientsRequestParams,\n    ListIssuerRootsRequestParams,\n    ListIssuerUpstreamsRequestParams,\n    ListIssuersRequestParams,\n    ListPoliciesRequestParams,\n    ListPolicyRulesRequestParams,\n    ListUpstreamAliasesRequestParams,\n    ListUpstreamGroupMappingsRequestParams,\n    ListWellknownIssuerInfoRequestParams,\n    ReplaceClientRequestParams,\n    ReplaceIssuerRequestParams,\n    ReplacePolicyRequestParams,\n    ReplacePolicyRuleRequestParams,\n    ReplaceRootRequestParams,\n    ReplaceUpstreamAliasRequestParams,\n    ReplaceUpstreamGroupMappingRequestParams,\n    ResetServiceAccountRequestParams,\n    ResetToDefaultPolicyRequestParams,\n    SetPolicyRequestParams,\n    ValidateUpstreamRequestParams\n} from './issuers.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class IssuersService implements IssuersServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Create a client\n     * Create a client\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createClient(requestParameters: CreateClientRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<IssuerClient>;\n    public createClient(requestParameters: CreateClientRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<IssuerClient>>;\n    public createClient(requestParameters: CreateClientRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<IssuerClient>>;\n    public createClient(requestParameters: CreateClientRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const IssuerClient = requestParameters.IssuerClient;\n        if (IssuerClient === null || IssuerClient === undefined) {\n            throw new Error('Required parameter IssuerClient was null or undefined when calling createClient.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_IssuerClient>(`${this.configuration.basePath}/v1/clients`,\n                    IssuerClient,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _IssuerClient) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new IssuerClientImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create an issuer\n     * Create an issuer\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createIssuer(requestParameters: CreateIssuerRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Issuer>;\n    public createIssuer(requestParameters: CreateIssuerRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Issuer>>;\n    public createIssuer(requestParameters: CreateIssuerRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Issuer>>;\n    public createIssuer(requestParameters: CreateIssuerRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const Issuer = requestParameters.Issuer;\n        if (Issuer === null || Issuer === undefined) {\n            throw new Error('Required parameter Issuer was null or undefined when calling createIssuer.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Issuer>(`${this.configuration.basePath}/v1/issuers/issuer_roots`,\n                    Issuer,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Issuer) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new IssuerImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a policy\n     * Create a policy\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createPolicy(requestParameters: CreatePolicyRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Policy>;\n    public createPolicy(requestParameters: CreatePolicyRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Policy>>;\n    public createPolicy(requestParameters: CreatePolicyRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Policy>>;\n    public createPolicy(requestParameters: CreatePolicyRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const Policy = requestParameters.Policy;\n        if (Policy === null || Policy === undefined) {\n            throw new Error('Required parameter Policy was null or undefined when calling createPolicy.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Policy>(`${this.configuration.basePath}/v1/issuers/authentication_policies`,\n                    Policy,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Policy) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new PolicyImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a policy rule\n     * Create a policy rule\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createPolicyRule(requestParameters: CreatePolicyRuleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<PolicyRule>;\n    public createPolicyRule(requestParameters: CreatePolicyRuleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<PolicyRule>>;\n    public createPolicyRule(requestParameters: CreatePolicyRuleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<PolicyRule>>;\n    public createPolicyRule(requestParameters: CreatePolicyRuleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const policy_id = requestParameters.policy_id;\n        if (policy_id === null || policy_id === undefined) {\n            throw new Error('Required parameter policy_id was null or undefined when calling createPolicyRule.');\n        }\n        const PolicyRule = requestParameters.PolicyRule;\n        if (PolicyRule === null || PolicyRule === undefined) {\n            throw new Error('Required parameter PolicyRule was null or undefined when calling createPolicyRule.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_PolicyRule>(`${this.configuration.basePath}/v1/issuers/authentication_policies/${encodeURIComponent(String(policy_id))}/policy_rules`,\n                    PolicyRule,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _PolicyRule) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new PolicyRuleImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create an upstream alias\n     * Create an upstream alias\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createUpstreamAlias(requestParameters: CreateUpstreamAliasRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UpstreamAlias>;\n    public createUpstreamAlias(requestParameters: CreateUpstreamAliasRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UpstreamAlias>>;\n    public createUpstreamAlias(requestParameters: CreateUpstreamAliasRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UpstreamAlias>>;\n    public createUpstreamAlias(requestParameters: CreateUpstreamAliasRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const issuer_id = requestParameters.issuer_id;\n        if (issuer_id === null || issuer_id === undefined) {\n            throw new Error('Required parameter issuer_id was null or undefined when calling createUpstreamAlias.');\n        }\n        const UpstreamAlias = requestParameters.UpstreamAlias;\n        if (UpstreamAlias === null || UpstreamAlias === undefined) {\n            throw new Error('Required parameter UpstreamAlias was null or undefined when calling createUpstreamAlias.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_UpstreamAlias>(`${this.configuration.basePath}/v1/issuers/issuer_extensions/${encodeURIComponent(String(issuer_id))}/upstream_aliases`,\n                    UpstreamAlias,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UpstreamAlias) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UpstreamAliasImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create an upstream group mapping\n     * Create an upstream group mapping\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createUpstreamGroupMapping(requestParameters: CreateUpstreamGroupMappingRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UpstreamGroupMapping>;\n    public createUpstreamGroupMapping(requestParameters: CreateUpstreamGroupMappingRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UpstreamGroupMapping>>;\n    public createUpstreamGroupMapping(requestParameters: CreateUpstreamGroupMappingRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UpstreamGroupMapping>>;\n    public createUpstreamGroupMapping(requestParameters: CreateUpstreamGroupMappingRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const issuer_id = requestParameters.issuer_id;\n        if (issuer_id === null || issuer_id === undefined) {\n            throw new Error('Required parameter issuer_id was null or undefined when calling createUpstreamGroupMapping.');\n        }\n        const UpstreamGroupMapping = requestParameters.UpstreamGroupMapping;\n        if (UpstreamGroupMapping === null || UpstreamGroupMapping === undefined) {\n            throw new Error('Required parameter UpstreamGroupMapping was null or undefined when calling createUpstreamGroupMapping.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_UpstreamGroupMapping>(`${this.configuration.basePath}/v1/issuers/issuer_extensions/${encodeURIComponent(String(issuer_id))}/upstream_group_mapping`,\n                    UpstreamGroupMapping,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UpstreamGroupMapping) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UpstreamGroupMappingImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a client\n     * Delete a client\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteClient(requestParameters: DeleteClientRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteClient(requestParameters: DeleteClientRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteClient(requestParameters: DeleteClientRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteClient(requestParameters: DeleteClientRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const client_id = requestParameters.client_id;\n        if (client_id === null || client_id === undefined) {\n            throw new Error('Required parameter client_id was null or undefined when calling deleteClient.');\n        }\n        const summarize_collection = requestParameters.summarize_collection;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (summarize_collection !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>summarize_collection, 'summarize_collection');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/clients/${encodeURIComponent(String(client_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a Policy\n     * Delete a Policy\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deletePolicy(requestParameters: DeletePolicyRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deletePolicy(requestParameters: DeletePolicyRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deletePolicy(requestParameters: DeletePolicyRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deletePolicy(requestParameters: DeletePolicyRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const policy_id = requestParameters.policy_id;\n        if (policy_id === null || policy_id === undefined) {\n            throw new Error('Required parameter policy_id was null or undefined when calling deletePolicy.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/issuers/authentication_policies/${encodeURIComponent(String(policy_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a Policy Rule\n     * Delete a Policy Rule\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deletePolicyRule(requestParameters: DeletePolicyRuleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deletePolicyRule(requestParameters: DeletePolicyRuleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deletePolicyRule(requestParameters: DeletePolicyRuleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deletePolicyRule(requestParameters: DeletePolicyRuleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const policy_id = requestParameters.policy_id;\n        if (policy_id === null || policy_id === undefined) {\n            throw new Error('Required parameter policy_id was null or undefined when calling deletePolicyRule.');\n        }\n        const policy_rule_id = requestParameters.policy_rule_id;\n        if (policy_rule_id === null || policy_rule_id === undefined) {\n            throw new Error('Required parameter policy_rule_id was null or undefined when calling deletePolicyRule.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/issuers/authentication_policies/${encodeURIComponent(String(policy_id))}/policy_rules/${encodeURIComponent(String(policy_rule_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete an Issuer\n     * Delete an Issuer\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteRoot(requestParameters: DeleteRootRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteRoot(requestParameters: DeleteRootRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteRoot(requestParameters: DeleteRootRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteRoot(requestParameters: DeleteRootRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const issuer_id = requestParameters.issuer_id;\n        if (issuer_id === null || issuer_id === undefined) {\n            throw new Error('Required parameter issuer_id was null or undefined when calling deleteRoot.');\n        }\n        const summarize_collection = requestParameters.summarize_collection;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (summarize_collection !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>summarize_collection, 'summarize_collection');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/issuers/issuer_roots/${encodeURIComponent(String(issuer_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete an upstream alias\n     * Delete an upstream alias\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteUpstreamAlias(requestParameters: DeleteUpstreamAliasRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteUpstreamAlias(requestParameters: DeleteUpstreamAliasRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteUpstreamAlias(requestParameters: DeleteUpstreamAliasRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteUpstreamAlias(requestParameters: DeleteUpstreamAliasRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const issuer_id = requestParameters.issuer_id;\n        if (issuer_id === null || issuer_id === undefined) {\n            throw new Error('Required parameter issuer_id was null or undefined when calling deleteUpstreamAlias.');\n        }\n        const upstream_alias_id = requestParameters.upstream_alias_id;\n        if (upstream_alias_id === null || upstream_alias_id === undefined) {\n            throw new Error('Required parameter upstream_alias_id was null or undefined when calling deleteUpstreamAlias.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/issuers/issuer_extensions/${encodeURIComponent(String(issuer_id))}/upstream_aliases/${encodeURIComponent(String(upstream_alias_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete an upstream group mapping\n     * Delete an upstream group mapping\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteUpstreamGroupMapping(requestParameters: DeleteUpstreamGroupMappingRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteUpstreamGroupMapping(requestParameters: DeleteUpstreamGroupMappingRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteUpstreamGroupMapping(requestParameters: DeleteUpstreamGroupMappingRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteUpstreamGroupMapping(requestParameters: DeleteUpstreamGroupMappingRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const issuer_id = requestParameters.issuer_id;\n        if (issuer_id === null || issuer_id === undefined) {\n            throw new Error('Required parameter issuer_id was null or undefined when calling deleteUpstreamGroupMapping.');\n        }\n        const upstream_group_mapping_id = requestParameters.upstream_group_mapping_id;\n        if (upstream_group_mapping_id === null || upstream_group_mapping_id === undefined) {\n            throw new Error('Required parameter upstream_group_mapping_id was null or undefined when calling deleteUpstreamGroupMapping.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/issuers/issuer_extensions/${encodeURIComponent(String(issuer_id))}/upstream_group_mapping/${encodeURIComponent(String(upstream_group_mapping_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get a client\n     * Get a client\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getClient(requestParameters: GetClientRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<IssuerClient>;\n    public getClient(requestParameters: GetClientRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<IssuerClient>>;\n    public getClient(requestParameters: GetClientRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<IssuerClient>>;\n    public getClient(requestParameters: GetClientRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const client_id = requestParameters.client_id;\n        if (client_id === null || client_id === undefined) {\n            throw new Error('Required parameter client_id was null or undefined when calling getClient.');\n        }\n        const summarize_collection = requestParameters.summarize_collection;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (summarize_collection !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>summarize_collection, 'summarize_collection');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_IssuerClient>(`${this.configuration.basePath}/v1/clients/${encodeURIComponent(String(client_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _IssuerClient) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new IssuerClientImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get an issuer\n     * Get an issuer\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getIssuer(requestParameters: GetIssuerRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Issuer>;\n    public getIssuer(requestParameters: GetIssuerRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Issuer>>;\n    public getIssuer(requestParameters: GetIssuerRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Issuer>>;\n    public getIssuer(requestParameters: GetIssuerRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const issuer_id = requestParameters.issuer_id;\n        if (issuer_id === null || issuer_id === undefined) {\n            throw new Error('Required parameter issuer_id was null or undefined when calling getIssuer.');\n        }\n        const summarize_collection = requestParameters.summarize_collection;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (summarize_collection !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>summarize_collection, 'summarize_collection');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Issuer>(`${this.configuration.basePath}/v1/issuers/issuer_extensions/${encodeURIComponent(String(issuer_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Issuer) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new IssuerImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a policy\n     * Get a policy\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getPolicy(requestParameters: GetPolicyRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Policy>;\n    public getPolicy(requestParameters: GetPolicyRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Policy>>;\n    public getPolicy(requestParameters: GetPolicyRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Policy>>;\n    public getPolicy(requestParameters: GetPolicyRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const policy_id = requestParameters.policy_id;\n        if (policy_id === null || policy_id === undefined) {\n            throw new Error('Required parameter policy_id was null or undefined when calling getPolicy.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Policy>(`${this.configuration.basePath}/v1/issuers/authentication_policies/${encodeURIComponent(String(policy_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Policy) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new PolicyImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a policy rule\n     * Get a policy rule\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getPolicyRule(requestParameters: GetPolicyRuleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<PolicyRule>;\n    public getPolicyRule(requestParameters: GetPolicyRuleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<PolicyRule>>;\n    public getPolicyRule(requestParameters: GetPolicyRuleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<PolicyRule>>;\n    public getPolicyRule(requestParameters: GetPolicyRuleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const policy_id = requestParameters.policy_id;\n        if (policy_id === null || policy_id === undefined) {\n            throw new Error('Required parameter policy_id was null or undefined when calling getPolicyRule.');\n        }\n        const policy_rule_id = requestParameters.policy_rule_id;\n        if (policy_rule_id === null || policy_rule_id === undefined) {\n            throw new Error('Required parameter policy_rule_id was null or undefined when calling getPolicyRule.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_PolicyRule>(`${this.configuration.basePath}/v1/issuers/authentication_policies/${encodeURIComponent(String(policy_id))}/policy_rules/${encodeURIComponent(String(policy_rule_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _PolicyRule) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new PolicyRuleImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get an issuer\n     * Get an issuer\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getRoot(requestParameters: GetRootRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Issuer>;\n    public getRoot(requestParameters: GetRootRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Issuer>>;\n    public getRoot(requestParameters: GetRootRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Issuer>>;\n    public getRoot(requestParameters: GetRootRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const issuer_id = requestParameters.issuer_id;\n        if (issuer_id === null || issuer_id === undefined) {\n            throw new Error('Required parameter issuer_id was null or undefined when calling getRoot.');\n        }\n        const summarize_collection = requestParameters.summarize_collection;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (summarize_collection !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>summarize_collection, 'summarize_collection');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Issuer>(`${this.configuration.basePath}/v1/issuers/issuer_roots/${encodeURIComponent(String(issuer_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Issuer) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new IssuerImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get an upstream alias\n     * Get an upstream alias\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getUpstreamAlias(requestParameters: GetUpstreamAliasRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UpstreamAlias>;\n    public getUpstreamAlias(requestParameters: GetUpstreamAliasRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UpstreamAlias>>;\n    public getUpstreamAlias(requestParameters: GetUpstreamAliasRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UpstreamAlias>>;\n    public getUpstreamAlias(requestParameters: GetUpstreamAliasRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const issuer_id = requestParameters.issuer_id;\n        if (issuer_id === null || issuer_id === undefined) {\n            throw new Error('Required parameter issuer_id was null or undefined when calling getUpstreamAlias.');\n        }\n        const upstream_alias_id = requestParameters.upstream_alias_id;\n        if (upstream_alias_id === null || upstream_alias_id === undefined) {\n            throw new Error('Required parameter upstream_alias_id was null or undefined when calling getUpstreamAlias.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_UpstreamAlias>(`${this.configuration.basePath}/v1/issuers/issuer_extensions/${encodeURIComponent(String(issuer_id))}/upstream_aliases/${encodeURIComponent(String(upstream_alias_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UpstreamAlias) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UpstreamAliasImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get an upstream group mapping\n     * Get an upstream group mapping\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getUpstreamGroupMapping(requestParameters: GetUpstreamGroupMappingRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UpstreamGroupMapping>;\n    public getUpstreamGroupMapping(requestParameters: GetUpstreamGroupMappingRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UpstreamGroupMapping>>;\n    public getUpstreamGroupMapping(requestParameters: GetUpstreamGroupMappingRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UpstreamGroupMapping>>;\n    public getUpstreamGroupMapping(requestParameters: GetUpstreamGroupMappingRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const issuer_id = requestParameters.issuer_id;\n        if (issuer_id === null || issuer_id === undefined) {\n            throw new Error('Required parameter issuer_id was null or undefined when calling getUpstreamGroupMapping.');\n        }\n        const upstream_group_mapping_id = requestParameters.upstream_group_mapping_id;\n        if (upstream_group_mapping_id === null || upstream_group_mapping_id === undefined) {\n            throw new Error('Required parameter upstream_group_mapping_id was null or undefined when calling getUpstreamGroupMapping.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_UpstreamGroupMapping>(`${this.configuration.basePath}/v1/issuers/issuer_extensions/${encodeURIComponent(String(issuer_id))}/upstream_group_mapping/${encodeURIComponent(String(upstream_group_mapping_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UpstreamGroupMapping) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UpstreamGroupMappingImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get provisioned upstreams for the issuer\n     * Get provisioned upstreams for the issuer\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getUpstreams(requestParameters: GetUpstreamsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<BaseUpstreams>;\n    public getUpstreams(requestParameters: GetUpstreamsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<BaseUpstreams>>;\n    public getUpstreams(requestParameters: GetUpstreamsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<BaseUpstreams>>;\n    public getUpstreams(requestParameters: GetUpstreamsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const issuer_id = requestParameters.issuer_id;\n        if (issuer_id === null || issuer_id === undefined) {\n            throw new Error('Required parameter issuer_id was null or undefined when calling getUpstreams.');\n        }\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling getUpstreams.');\n        }\n        const upstream_type = requestParameters.upstream_type;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (upstream_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>upstream_type, 'upstream_type');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_BaseUpstreams>(`${this.configuration.basePath}/v1/issuers/issuer_extensions/${encodeURIComponent(String(issuer_id))}/upstreams`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _BaseUpstreams) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new BaseUpstreamsImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get well-known issuer information\n     * Get well-known issuer information\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getWellknownIssuerInfo(requestParameters: GetWellknownIssuerInfoRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<WellKnownIssuerInfo>;\n    public getWellknownIssuerInfo(requestParameters: GetWellknownIssuerInfoRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<WellKnownIssuerInfo>>;\n    public getWellknownIssuerInfo(requestParameters: GetWellknownIssuerInfoRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<WellKnownIssuerInfo>>;\n    public getWellknownIssuerInfo(requestParameters: GetWellknownIssuerInfoRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const issuer_id = requestParameters.issuer_id;\n        if (issuer_id === null || issuer_id === undefined) {\n            throw new Error('Required parameter issuer_id was null or undefined when calling getWellknownIssuerInfo.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_WellKnownIssuerInfo>(`${this.configuration.basePath}/v1/issuers/issuer_extensions/${encodeURIComponent(String(issuer_id))}/well_known_info`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _WellKnownIssuerInfo) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new WellKnownIssuerInfoImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Query Clients\n     * Query Clients\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listClients(requestParameters: ListClientsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListIssuerClientsResponse>;\n    public listClients(requestParameters: ListClientsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListIssuerClientsResponse>>;\n    public listClients(requestParameters: ListClientsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListIssuerClientsResponse>>;\n    public listClients(requestParameters: ListClientsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const summarize_collection = requestParameters.summarize_collection;\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const admin_status = requestParameters.admin_status;\n        const show_deleted = requestParameters.show_deleted;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (summarize_collection !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>summarize_collection, 'summarize_collection');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (admin_status !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>admin_status, 'admin_status');\n        }\n        if (show_deleted !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>show_deleted, 'show_deleted');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListIssuerClientsResponse>(`${this.configuration.basePath}/v1/clients`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListIssuerClientsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListIssuerClientsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Query Issuers\n     * Query Issuers\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listIssuerRoots(requestParameters: ListIssuerRootsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListIssuerRootsResponse>;\n    public listIssuerRoots(requestParameters: ListIssuerRootsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListIssuerRootsResponse>>;\n    public listIssuerRoots(requestParameters: ListIssuerRootsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListIssuerRootsResponse>>;\n    public listIssuerRoots(requestParameters: ListIssuerRootsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const summarize_collection = requestParameters.summarize_collection;\n        const limit = requestParameters.limit;\n        const issuer = requestParameters.issuer;\n        const admin_status = requestParameters.admin_status;\n        const show_deleted = requestParameters.show_deleted;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (summarize_collection !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>summarize_collection, 'summarize_collection');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (issuer !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>issuer, 'issuer');\n        }\n        if (admin_status !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>admin_status, 'admin_status');\n        }\n        if (show_deleted !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>show_deleted, 'show_deleted');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListIssuerRootsResponse>(`${this.configuration.basePath}/v1/issuers/issuer_roots`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListIssuerRootsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListIssuerRootsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * list issuer upstream information\n     * list issuer upstream information\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listIssuerUpstreams(requestParameters: ListIssuerUpstreamsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListIssuerUpstreams>;\n    public listIssuerUpstreams(requestParameters: ListIssuerUpstreamsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListIssuerUpstreams>>;\n    public listIssuerUpstreams(requestParameters: ListIssuerUpstreamsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListIssuerUpstreams>>;\n    public listIssuerUpstreams(requestParameters: ListIssuerUpstreamsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const upstream_type = requestParameters.upstream_type;\n        const org_id = requestParameters.org_id;\n        const limit = requestParameters.limit;\n        const admin_status = requestParameters.admin_status;\n        const show_deleted = requestParameters.show_deleted;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (upstream_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>upstream_type, 'upstream_type');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (admin_status !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>admin_status, 'admin_status');\n        }\n        if (show_deleted !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>show_deleted, 'show_deleted');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListIssuerUpstreams>(`${this.configuration.basePath}/v1/issuer_upstreams`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListIssuerUpstreams) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListIssuerUpstreamsImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Query Issuers\n     * Query Issuers\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listIssuers(requestParameters: ListIssuersRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListIssuerExtensionsResponse>;\n    public listIssuers(requestParameters: ListIssuersRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListIssuerExtensionsResponse>>;\n    public listIssuers(requestParameters: ListIssuersRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListIssuerExtensionsResponse>>;\n    public listIssuers(requestParameters: ListIssuersRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const summarize_collection = requestParameters.summarize_collection;\n        const limit = requestParameters.limit;\n        const issuer = requestParameters.issuer;\n        const org_id = requestParameters.org_id;\n        const admin_status = requestParameters.admin_status;\n        const show_deleted = requestParameters.show_deleted;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (summarize_collection !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>summarize_collection, 'summarize_collection');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (issuer !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>issuer, 'issuer');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (admin_status !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>admin_status, 'admin_status');\n        }\n        if (show_deleted !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>show_deleted, 'show_deleted');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListIssuerExtensionsResponse>(`${this.configuration.basePath}/v1/issuers/issuer_extensions`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListIssuerExtensionsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListIssuerExtensionsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Query Policies\n     * Query Policies\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listPolicies(requestParameters: ListPoliciesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListPoliciesResponse>;\n    public listPolicies(requestParameters: ListPoliciesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListPoliciesResponse>>;\n    public listPolicies(requestParameters: ListPoliciesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListPoliciesResponse>>;\n    public listPolicies(requestParameters: ListPoliciesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const issuer_id = requestParameters.issuer_id;\n        const policy_name = requestParameters.policy_name;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (issuer_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>issuer_id, 'issuer_id');\n        }\n        if (policy_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>policy_name, 'policy_name');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListPoliciesResponse>(`${this.configuration.basePath}/v1/issuers/authentication_policies`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListPoliciesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListPoliciesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Query Policy rules\n     * Query Policy rules\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listPolicyRules(requestParameters: ListPolicyRulesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListPolicyRulesResponse>;\n    public listPolicyRules(requestParameters: ListPolicyRulesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListPolicyRulesResponse>>;\n    public listPolicyRules(requestParameters: ListPolicyRulesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListPolicyRulesResponse>>;\n    public listPolicyRules(requestParameters: ListPolicyRulesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const policy_id = requestParameters.policy_id;\n        if (policy_id === null || policy_id === undefined) {\n            throw new Error('Required parameter policy_id was null or undefined when calling listPolicyRules.');\n        }\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListPolicyRulesResponse>(`${this.configuration.basePath}/v1/issuers/authentication_policies/${encodeURIComponent(String(policy_id))}/policy_rules`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListPolicyRulesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListPolicyRulesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Query upstream aliases for an issuer\n     * Query upstream aliases for an issuer\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listUpstreamAliases(requestParameters: ListUpstreamAliasesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListUpstreamAliases>;\n    public listUpstreamAliases(requestParameters: ListUpstreamAliasesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListUpstreamAliases>>;\n    public listUpstreamAliases(requestParameters: ListUpstreamAliasesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListUpstreamAliases>>;\n    public listUpstreamAliases(requestParameters: ListUpstreamAliasesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const issuer_id = requestParameters.issuer_id;\n        if (issuer_id === null || issuer_id === undefined) {\n            throw new Error('Required parameter issuer_id was null or undefined when calling listUpstreamAliases.');\n        }\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListUpstreamAliases>(`${this.configuration.basePath}/v1/issuers/issuer_extensions/${encodeURIComponent(String(issuer_id))}/upstream_aliases`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListUpstreamAliases) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListUpstreamAliasesImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Query upstream group mappings for an issuer\n     * Query upstream group mappings for an issuer\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listUpstreamGroupMappings(requestParameters: ListUpstreamGroupMappingsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListUpstreamGroupMapping>;\n    public listUpstreamGroupMappings(requestParameters: ListUpstreamGroupMappingsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListUpstreamGroupMapping>>;\n    public listUpstreamGroupMappings(requestParameters: ListUpstreamGroupMappingsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListUpstreamGroupMapping>>;\n    public listUpstreamGroupMappings(requestParameters: ListUpstreamGroupMappingsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const issuer_id = requestParameters.issuer_id;\n        if (issuer_id === null || issuer_id === undefined) {\n            throw new Error('Required parameter issuer_id was null or undefined when calling listUpstreamGroupMappings.');\n        }\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListUpstreamGroupMapping>(`${this.configuration.basePath}/v1/issuers/issuer_extensions/${encodeURIComponent(String(issuer_id))}/upstream_group_mapping`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListUpstreamGroupMapping) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListUpstreamGroupMappingImpl(response)\n            })\n        );\n    }\n\n    /**\n     * list well-known issuer information\n     * list well-known issuer information\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listWellknownIssuerInfo(requestParameters: ListWellknownIssuerInfoRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListWellKnownIssuerInfo>;\n    public listWellknownIssuerInfo(requestParameters: ListWellknownIssuerInfoRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListWellKnownIssuerInfo>>;\n    public listWellknownIssuerInfo(requestParameters: ListWellknownIssuerInfoRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListWellKnownIssuerInfo>>;\n    public listWellknownIssuerInfo(requestParameters: ListWellknownIssuerInfoRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const issuer_id = requestParameters.issuer_id;\n        const limit = requestParameters.limit;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (issuer_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>issuer_id, 'issuer_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListWellKnownIssuerInfo>(`${this.configuration.basePath}/v1/issuers/issuer_extensions/well_known_info`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListWellKnownIssuerInfo) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListWellKnownIssuerInfoImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a client\n     * Update a client\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceClient(requestParameters: ReplaceClientRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<IssuerClient>;\n    public replaceClient(requestParameters: ReplaceClientRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<IssuerClient>>;\n    public replaceClient(requestParameters: ReplaceClientRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<IssuerClient>>;\n    public replaceClient(requestParameters: ReplaceClientRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const client_id = requestParameters.client_id;\n        if (client_id === null || client_id === undefined) {\n            throw new Error('Required parameter client_id was null or undefined when calling replaceClient.');\n        }\n        const IssuerClient = requestParameters.IssuerClient;\n        if (IssuerClient === null || IssuerClient === undefined) {\n            throw new Error('Required parameter IssuerClient was null or undefined when calling replaceClient.');\n        }\n        const summarize_collection = requestParameters.summarize_collection;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (summarize_collection !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>summarize_collection, 'summarize_collection');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_IssuerClient>(`${this.configuration.basePath}/v1/clients/${encodeURIComponent(String(client_id))}`,\n                    IssuerClient,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _IssuerClient) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new IssuerClientImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update an issuer\n     * Update an issuer\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceIssuer(requestParameters: ReplaceIssuerRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Issuer>;\n    public replaceIssuer(requestParameters: ReplaceIssuerRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Issuer>>;\n    public replaceIssuer(requestParameters: ReplaceIssuerRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Issuer>>;\n    public replaceIssuer(requestParameters: ReplaceIssuerRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const issuer_id = requestParameters.issuer_id;\n        if (issuer_id === null || issuer_id === undefined) {\n            throw new Error('Required parameter issuer_id was null or undefined when calling replaceIssuer.');\n        }\n        const Issuer = requestParameters.Issuer;\n        if (Issuer === null || Issuer === undefined) {\n            throw new Error('Required parameter Issuer was null or undefined when calling replaceIssuer.');\n        }\n        const summarize_collection = requestParameters.summarize_collection;\n        const force_reconcile_theme = requestParameters.force_reconcile_theme;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (summarize_collection !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>summarize_collection, 'summarize_collection');\n        }\n        if (force_reconcile_theme !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>force_reconcile_theme, 'force_reconcile_theme');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_Issuer>(`${this.configuration.basePath}/v1/issuers/issuer_extensions/${encodeURIComponent(String(issuer_id))}`,\n                    Issuer,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Issuer) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new IssuerImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a policy\n     * Update a policy\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replacePolicy(requestParameters: ReplacePolicyRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Policy>;\n    public replacePolicy(requestParameters: ReplacePolicyRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Policy>>;\n    public replacePolicy(requestParameters: ReplacePolicyRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Policy>>;\n    public replacePolicy(requestParameters: ReplacePolicyRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const policy_id = requestParameters.policy_id;\n        if (policy_id === null || policy_id === undefined) {\n            throw new Error('Required parameter policy_id was null or undefined when calling replacePolicy.');\n        }\n        const Policy = requestParameters.Policy;\n        if (Policy === null || Policy === undefined) {\n            throw new Error('Required parameter Policy was null or undefined when calling replacePolicy.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_Policy>(`${this.configuration.basePath}/v1/issuers/authentication_policies/${encodeURIComponent(String(policy_id))}`,\n                    Policy,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Policy) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new PolicyImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a policy rule\n     * Update a policy rule\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replacePolicyRule(requestParameters: ReplacePolicyRuleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<PolicyRule>;\n    public replacePolicyRule(requestParameters: ReplacePolicyRuleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<PolicyRule>>;\n    public replacePolicyRule(requestParameters: ReplacePolicyRuleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<PolicyRule>>;\n    public replacePolicyRule(requestParameters: ReplacePolicyRuleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const policy_id = requestParameters.policy_id;\n        if (policy_id === null || policy_id === undefined) {\n            throw new Error('Required parameter policy_id was null or undefined when calling replacePolicyRule.');\n        }\n        const policy_rule_id = requestParameters.policy_rule_id;\n        if (policy_rule_id === null || policy_rule_id === undefined) {\n            throw new Error('Required parameter policy_rule_id was null or undefined when calling replacePolicyRule.');\n        }\n        const PolicyRule = requestParameters.PolicyRule;\n        if (PolicyRule === null || PolicyRule === undefined) {\n            throw new Error('Required parameter PolicyRule was null or undefined when calling replacePolicyRule.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_PolicyRule>(`${this.configuration.basePath}/v1/issuers/authentication_policies/${encodeURIComponent(String(policy_id))}/policy_rules/${encodeURIComponent(String(policy_rule_id))}`,\n                    PolicyRule,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _PolicyRule) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new PolicyRuleImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update an issuer\n     * Update an issuer\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceRoot(requestParameters: ReplaceRootRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Issuer>;\n    public replaceRoot(requestParameters: ReplaceRootRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Issuer>>;\n    public replaceRoot(requestParameters: ReplaceRootRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Issuer>>;\n    public replaceRoot(requestParameters: ReplaceRootRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const issuer_id = requestParameters.issuer_id;\n        if (issuer_id === null || issuer_id === undefined) {\n            throw new Error('Required parameter issuer_id was null or undefined when calling replaceRoot.');\n        }\n        const Issuer = requestParameters.Issuer;\n        if (Issuer === null || Issuer === undefined) {\n            throw new Error('Required parameter Issuer was null or undefined when calling replaceRoot.');\n        }\n        const summarize_collection = requestParameters.summarize_collection;\n        const org_id = requestParameters.org_id;\n        const force_reconcile_theme = requestParameters.force_reconcile_theme;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (summarize_collection !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>summarize_collection, 'summarize_collection');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (force_reconcile_theme !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>force_reconcile_theme, 'force_reconcile_theme');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_Issuer>(`${this.configuration.basePath}/v1/issuers/issuer_roots/${encodeURIComponent(String(issuer_id))}`,\n                    Issuer,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Issuer) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new IssuerImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update an upstream alias\n     * Update an upstream alias\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceUpstreamAlias(requestParameters: ReplaceUpstreamAliasRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UpstreamAlias>;\n    public replaceUpstreamAlias(requestParameters: ReplaceUpstreamAliasRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UpstreamAlias>>;\n    public replaceUpstreamAlias(requestParameters: ReplaceUpstreamAliasRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UpstreamAlias>>;\n    public replaceUpstreamAlias(requestParameters: ReplaceUpstreamAliasRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const issuer_id = requestParameters.issuer_id;\n        if (issuer_id === null || issuer_id === undefined) {\n            throw new Error('Required parameter issuer_id was null or undefined when calling replaceUpstreamAlias.');\n        }\n        const upstream_alias_id = requestParameters.upstream_alias_id;\n        if (upstream_alias_id === null || upstream_alias_id === undefined) {\n            throw new Error('Required parameter upstream_alias_id was null or undefined when calling replaceUpstreamAlias.');\n        }\n        const UpstreamAlias = requestParameters.UpstreamAlias;\n        if (UpstreamAlias === null || UpstreamAlias === undefined) {\n            throw new Error('Required parameter UpstreamAlias was null or undefined when calling replaceUpstreamAlias.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_UpstreamAlias>(`${this.configuration.basePath}/v1/issuers/issuer_extensions/${encodeURIComponent(String(issuer_id))}/upstream_aliases/${encodeURIComponent(String(upstream_alias_id))}`,\n                    UpstreamAlias,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UpstreamAlias) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UpstreamAliasImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update an upstream group mapping\n     * Update an upstream group mapping\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceUpstreamGroupMapping(requestParameters: ReplaceUpstreamGroupMappingRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UpstreamGroupMapping>;\n    public replaceUpstreamGroupMapping(requestParameters: ReplaceUpstreamGroupMappingRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UpstreamGroupMapping>>;\n    public replaceUpstreamGroupMapping(requestParameters: ReplaceUpstreamGroupMappingRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UpstreamGroupMapping>>;\n    public replaceUpstreamGroupMapping(requestParameters: ReplaceUpstreamGroupMappingRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const issuer_id = requestParameters.issuer_id;\n        if (issuer_id === null || issuer_id === undefined) {\n            throw new Error('Required parameter issuer_id was null or undefined when calling replaceUpstreamGroupMapping.');\n        }\n        const upstream_group_mapping_id = requestParameters.upstream_group_mapping_id;\n        if (upstream_group_mapping_id === null || upstream_group_mapping_id === undefined) {\n            throw new Error('Required parameter upstream_group_mapping_id was null or undefined when calling replaceUpstreamGroupMapping.');\n        }\n        const UpstreamGroupMapping = requestParameters.UpstreamGroupMapping;\n        if (UpstreamGroupMapping === null || UpstreamGroupMapping === undefined) {\n            throw new Error('Required parameter UpstreamGroupMapping was null or undefined when calling replaceUpstreamGroupMapping.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_UpstreamGroupMapping>(`${this.configuration.basePath}/v1/issuers/issuer_extensions/${encodeURIComponent(String(issuer_id))}/upstream_group_mapping/${encodeURIComponent(String(upstream_group_mapping_id))}`,\n                    UpstreamGroupMapping,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UpstreamGroupMapping) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UpstreamGroupMappingImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Reset the service account for the specified issuer\n     * Reset the service account for the specified issuer\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public resetServiceAccount(requestParameters: ResetServiceAccountRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Issuer>;\n    public resetServiceAccount(requestParameters: ResetServiceAccountRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Issuer>>;\n    public resetServiceAccount(requestParameters: ResetServiceAccountRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Issuer>>;\n    public resetServiceAccount(requestParameters: ResetServiceAccountRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const ServiceAccountResetBody = requestParameters.ServiceAccountResetBody;\n        if (ServiceAccountResetBody === null || ServiceAccountResetBody === undefined) {\n            throw new Error('Required parameter ServiceAccountResetBody was null or undefined when calling resetServiceAccount.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Issuer>(`${this.configuration.basePath}/v1/issuers/reset_service_account`,\n                    ServiceAccountResetBody,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Issuer) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new IssuerImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Reset the current policy to the default policy\n     * Reset the current policy to the default policy. This will create a new policy as the active policy for your organisation. The old policy will still exist with the same policy_id but will be disassociated with this issuer. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public resetToDefaultPolicy(requestParameters: ResetToDefaultPolicyRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Policy>;\n    public resetToDefaultPolicy(requestParameters: ResetToDefaultPolicyRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Policy>>;\n    public resetToDefaultPolicy(requestParameters: ResetToDefaultPolicyRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Policy>>;\n    public resetToDefaultPolicy(requestParameters: ResetToDefaultPolicyRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const issuer_id = requestParameters.issuer_id;\n        if (issuer_id === null || issuer_id === undefined) {\n            throw new Error('Required parameter issuer_id was null or undefined when calling resetToDefaultPolicy.');\n        }\n        const ResetPolicyRequest = requestParameters.ResetPolicyRequest;\n        if (ResetPolicyRequest === null || ResetPolicyRequest === undefined) {\n            throw new Error('Required parameter ResetPolicyRequest was null or undefined when calling resetToDefaultPolicy.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Policy>(`${this.configuration.basePath}/v1/issuers/issuer_extensions/${encodeURIComponent(String(issuer_id))}/set_auth_policy_to_default`,\n                    ResetPolicyRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Policy) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new PolicyImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Set the current policy to the policy sent\n     * Set the current policy to the given policy. This will replace the given issuer\\&#39;s policy with the content from the sent policy. Any ids will be used to link rules together, but be replaced, and any org_ids will be replaced with the org_id of the policy sent. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public setPolicy(requestParameters: SetPolicyRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Policy>;\n    public setPolicy(requestParameters: SetPolicyRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Policy>>;\n    public setPolicy(requestParameters: SetPolicyRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Policy>>;\n    public setPolicy(requestParameters: SetPolicyRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const issuer_id = requestParameters.issuer_id;\n        if (issuer_id === null || issuer_id === undefined) {\n            throw new Error('Required parameter issuer_id was null or undefined when calling setPolicy.');\n        }\n        const PolicySpec = requestParameters.PolicySpec;\n        if (PolicySpec === null || PolicySpec === undefined) {\n            throw new Error('Required parameter PolicySpec was null or undefined when calling setPolicy.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Policy>(`${this.configuration.basePath}/v1/issuers/issuer_extensions/${encodeURIComponent(String(issuer_id))}/set_auth_policy`,\n                    PolicySpec,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Policy) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new PolicyImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Validate upstream issuer\n     * Validate upstream issuer\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public validateUpstream(requestParameters: ValidateUpstreamRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public validateUpstream(requestParameters: ValidateUpstreamRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public validateUpstream(requestParameters: ValidateUpstreamRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public validateUpstream(requestParameters: ValidateUpstreamRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling validateUpstream.');\n        }\n        const issuer_upstream_url = requestParameters.issuer_upstream_url;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (issuer_upstream_url !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>issuer_upstream_url, 'issuer_upstream_url');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<any>(`${this.configuration.basePath}/v1/issuers/validate_upstream`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _BulkDeleteLabelledObjectsRequest, BulkDeleteLabelledObjectsRequest, BulkDeleteLabelledObjectsRequestImpl } from '../model/models';\nimport { _BulkDeleteLabelledObjectsResponse, BulkDeleteLabelledObjectsResponse, BulkDeleteLabelledObjectsResponseImpl } from '../model/models';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _Label, Label, LabelImpl } from '../model/models';\nimport { _LabelAssociation, LabelAssociation, LabelAssociationImpl } from '../model/models';\nimport { _LabelledObject, LabelledObject, LabelledObjectImpl } from '../model/models';\nimport { _ListLabelledObjectsResponse, ListLabelledObjectsResponse, ListLabelledObjectsResponseImpl } from '../model/models';\nimport { _ListLabelsResponse, ListLabelsResponse, ListLabelsResponseImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    LabelsServiceInterface,\n    BulkDeleteLabelledObjectsRequestParams,\n    CreateLabelledObjectRequestParams,\n    CreateLabelledObjectLabelRequestParams,\n    CreateObjectLabelRequestParams,\n    DeleteLabelledObjectRequestParams,\n    DeleteLabelledObjectLabelRequestParams,\n    DeleteObjectLabelRequestParams,\n    GetLabelledObjectRequestParams,\n    GetObjectLabelRequestParams,\n    ListLabelledObjectsRequestParams,\n    ListObjectLabelsRequestParams,\n    ReplaceLabelledObjectRequestParams,\n    ReplaceObjectLabelRequestParams\n} from './labels.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class LabelsService implements LabelsServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Delete many label associations\n     * Deletes many label associations. Will also remove any labels if they are no longer referenced and they were automatically created. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public bulkDeleteLabelledObjects(requestParameters: BulkDeleteLabelledObjectsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<BulkDeleteLabelledObjectsResponse>;\n    public bulkDeleteLabelledObjects(requestParameters: BulkDeleteLabelledObjectsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<BulkDeleteLabelledObjectsResponse>>;\n    public bulkDeleteLabelledObjects(requestParameters: BulkDeleteLabelledObjectsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<BulkDeleteLabelledObjectsResponse>>;\n    public bulkDeleteLabelledObjects(requestParameters: BulkDeleteLabelledObjectsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const BulkDeleteLabelledObjectsRequest = requestParameters.BulkDeleteLabelledObjectsRequest;\n        if (BulkDeleteLabelledObjectsRequest === null || BulkDeleteLabelledObjectsRequest === undefined) {\n            throw new Error('Required parameter BulkDeleteLabelledObjectsRequest was null or undefined when calling bulkDeleteLabelledObjects.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_BulkDeleteLabelledObjectsResponse>(`${this.configuration.basePath}/v1/labelled_objects/bulk_delete`,\n                    BulkDeleteLabelledObjectsRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _BulkDeleteLabelledObjectsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new BulkDeleteLabelledObjectsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Add a labelled object\n     * Adds a new labelled object. The association must have a unique object_id, object_type and label_name within an organsation. If it does not, then the create will return a 409 including the conflicting object. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createLabelledObject(requestParameters: CreateLabelledObjectRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<LabelledObject>;\n    public createLabelledObject(requestParameters: CreateLabelledObjectRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<LabelledObject>>;\n    public createLabelledObject(requestParameters: CreateLabelledObjectRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<LabelledObject>>;\n    public createLabelledObject(requestParameters: CreateLabelledObjectRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const LabelledObject = requestParameters.LabelledObject;\n        if (LabelledObject === null || LabelledObject === undefined) {\n            throw new Error('Required parameter LabelledObject was null or undefined when calling createLabelledObject.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_LabelledObject>(`${this.configuration.basePath}/v1/labelled_objects`,\n                    LabelledObject,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _LabelledObject) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new LabelledObjectImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Add a label association\n     * Associates a label with an object. If already associated, this will return a 409 including the conflicting object. Note that a new label will be created if one with the provided name does not yet exist. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createLabelledObjectLabel(requestParameters: CreateLabelledObjectLabelRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<LabelAssociation>;\n    public createLabelledObjectLabel(requestParameters: CreateLabelledObjectLabelRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<LabelAssociation>>;\n    public createLabelledObjectLabel(requestParameters: CreateLabelledObjectLabelRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<LabelAssociation>>;\n    public createLabelledObjectLabel(requestParameters: CreateLabelledObjectLabelRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const labelled_object_id = requestParameters.labelled_object_id;\n        if (labelled_object_id === null || labelled_object_id === undefined) {\n            throw new Error('Required parameter labelled_object_id was null or undefined when calling createLabelledObjectLabel.');\n        }\n        const LabelAssociation = requestParameters.LabelAssociation;\n        if (LabelAssociation === null || LabelAssociation === undefined) {\n            throw new Error('Required parameter LabelAssociation was null or undefined when calling createLabelledObjectLabel.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_LabelAssociation>(`${this.configuration.basePath}/v1/labelled_objects/${encodeURIComponent(String(labelled_object_id))}/labels`,\n                    LabelAssociation,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _LabelAssociation) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new LabelAssociationImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Add a label\n     * Adds a label. Labels must have unique names within an org. If the name is not unique, a 409 will be returned. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createObjectLabel(requestParameters: CreateObjectLabelRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Label>;\n    public createObjectLabel(requestParameters: CreateObjectLabelRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Label>>;\n    public createObjectLabel(requestParameters: CreateObjectLabelRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Label>>;\n    public createObjectLabel(requestParameters: CreateObjectLabelRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const Label = requestParameters.Label;\n        if (Label === null || Label === undefined) {\n            throw new Error('Required parameter Label was null or undefined when calling createObjectLabel.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Label>(`${this.configuration.basePath}/v1/labels`,\n                    Label,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Label) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new LabelImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a labelled object\n     * Delete a labelled object\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteLabelledObject(requestParameters: DeleteLabelledObjectRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteLabelledObject(requestParameters: DeleteLabelledObjectRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteLabelledObject(requestParameters: DeleteLabelledObjectRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteLabelledObject(requestParameters: DeleteLabelledObjectRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const labelled_object_id = requestParameters.labelled_object_id;\n        if (labelled_object_id === null || labelled_object_id === undefined) {\n            throw new Error('Required parameter labelled_object_id was null or undefined when calling deleteLabelledObject.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/labelled_objects/${encodeURIComponent(String(labelled_object_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a label association\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteLabelledObjectLabel(requestParameters: DeleteLabelledObjectLabelRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteLabelledObjectLabel(requestParameters: DeleteLabelledObjectLabelRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteLabelledObjectLabel(requestParameters: DeleteLabelledObjectLabelRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteLabelledObjectLabel(requestParameters: DeleteLabelledObjectLabelRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const labelled_object_id = requestParameters.labelled_object_id;\n        if (labelled_object_id === null || labelled_object_id === undefined) {\n            throw new Error('Required parameter labelled_object_id was null or undefined when calling deleteLabelledObjectLabel.');\n        }\n        const label_name = requestParameters.label_name;\n        if (label_name === null || label_name === undefined) {\n            throw new Error('Required parameter label_name was null or undefined when calling deleteLabelledObjectLabel.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/labelled_objects/${encodeURIComponent(String(labelled_object_id))}/labels/${encodeURIComponent(String(label_name))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a label\n     * Delete a label\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteObjectLabel(requestParameters: DeleteObjectLabelRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteObjectLabel(requestParameters: DeleteObjectLabelRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteObjectLabel(requestParameters: DeleteObjectLabelRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteObjectLabel(requestParameters: DeleteObjectLabelRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const label_id = requestParameters.label_id;\n        if (label_id === null || label_id === undefined) {\n            throw new Error('Required parameter label_id was null or undefined when calling deleteObjectLabel.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/labels/${encodeURIComponent(String(label_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get a labelled object\n     * Get a labelled object\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getLabelledObject(requestParameters: GetLabelledObjectRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<LabelledObject>;\n    public getLabelledObject(requestParameters: GetLabelledObjectRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<LabelledObject>>;\n    public getLabelledObject(requestParameters: GetLabelledObjectRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<LabelledObject>>;\n    public getLabelledObject(requestParameters: GetLabelledObjectRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const labelled_object_id = requestParameters.labelled_object_id;\n        if (labelled_object_id === null || labelled_object_id === undefined) {\n            throw new Error('Required parameter labelled_object_id was null or undefined when calling getLabelledObject.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_LabelledObject>(`${this.configuration.basePath}/v1/labelled_objects/${encodeURIComponent(String(labelled_object_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _LabelledObject) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new LabelledObjectImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a label\n     * Get a label\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getObjectLabel(requestParameters: GetObjectLabelRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Label>;\n    public getObjectLabel(requestParameters: GetObjectLabelRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Label>>;\n    public getObjectLabel(requestParameters: GetObjectLabelRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Label>>;\n    public getObjectLabel(requestParameters: GetObjectLabelRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const label_id = requestParameters.label_id;\n        if (label_id === null || label_id === undefined) {\n            throw new Error('Required parameter label_id was null or undefined when calling getObjectLabel.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Label>(`${this.configuration.basePath}/v1/labels/${encodeURIComponent(String(label_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Label) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new LabelImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all labelled objects\n     * List all labelled objects matching the provided query parameters. Perform keyset pagination by setting the page_at_id parameter to the id for the next page to fetch. Set it to &#x60;\\&quot;\\&quot;&#x60; to start from the beginning. Searching for label_id will return any tree that references that label. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listLabelledObjects(requestParameters: ListLabelledObjectsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListLabelledObjectsResponse>;\n    public listLabelledObjects(requestParameters: ListLabelledObjectsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListLabelledObjectsResponse>>;\n    public listLabelledObjects(requestParameters: ListLabelledObjectsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListLabelledObjectsResponse>>;\n    public listLabelledObjects(requestParameters: ListLabelledObjectsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const includes_any_label = requestParameters.includes_any_label;\n        const excludes_any_label = requestParameters.excludes_any_label;\n        const object_id = requestParameters.object_id;\n        const object_type = requestParameters.object_type;\n        const object_types = requestParameters.object_types;\n        const object_ids = requestParameters.object_ids;\n        const org_ids = requestParameters.org_ids;\n        const page_at_id = requestParameters.page_at_id;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (includes_any_label) {\n            includes_any_label.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'includes_any_label');\n            })\n        }\n        if (excludes_any_label) {\n            excludes_any_label.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'excludes_any_label');\n            })\n        }\n        if (object_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>object_id, 'object_id');\n        }\n        if (object_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>object_type, 'object_type');\n        }\n        if (object_types) {\n            object_types.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'object_types');\n            })\n        }\n        if (object_ids) {\n            object_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'object_ids');\n            })\n        }\n        if (org_ids) {\n            org_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'org_ids');\n            })\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListLabelledObjectsResponse>(`${this.configuration.basePath}/v1/labelled_objects`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListLabelledObjectsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListLabelledObjectsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all labels\n     * List all labels matching the provided query parameters. Perform keyset pagination by setting the page_at_id parameter to the id for the next page to fetch. Set it to &#x60;\\&quot;\\&quot;&#x60; to start from the beginning. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listObjectLabels(requestParameters: ListObjectLabelsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListLabelsResponse>;\n    public listObjectLabels(requestParameters: ListObjectLabelsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListLabelsResponse>>;\n    public listObjectLabels(requestParameters: ListObjectLabelsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListLabelsResponse>>;\n    public listObjectLabels(requestParameters: ListObjectLabelsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const label_name = requestParameters.label_name;\n        const page_at_id = requestParameters.page_at_id;\n        const org_id = requestParameters.org_id;\n        const navigation_enabled = requestParameters.navigation_enabled;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (label_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>label_name, 'label_name');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (navigation_enabled !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>navigation_enabled, 'navigation_enabled');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListLabelsResponse>(`${this.configuration.basePath}/v1/labels`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListLabelsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListLabelsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * update a labelled object\n     * update a labelled object\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceLabelledObject(requestParameters: ReplaceLabelledObjectRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<LabelledObject>;\n    public replaceLabelledObject(requestParameters: ReplaceLabelledObjectRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<LabelledObject>>;\n    public replaceLabelledObject(requestParameters: ReplaceLabelledObjectRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<LabelledObject>>;\n    public replaceLabelledObject(requestParameters: ReplaceLabelledObjectRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const labelled_object_id = requestParameters.labelled_object_id;\n        if (labelled_object_id === null || labelled_object_id === undefined) {\n            throw new Error('Required parameter labelled_object_id was null or undefined when calling replaceLabelledObject.');\n        }\n        const LabelledObject = requestParameters.LabelledObject;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_LabelledObject>(`${this.configuration.basePath}/v1/labelled_objects/${encodeURIComponent(String(labelled_object_id))}`,\n                    LabelledObject,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _LabelledObject) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new LabelledObjectImpl(response)\n            })\n        );\n    }\n\n    /**\n     * update a label\n     * update a label\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceObjectLabel(requestParameters: ReplaceObjectLabelRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Label>;\n    public replaceObjectLabel(requestParameters: ReplaceObjectLabelRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Label>>;\n    public replaceObjectLabel(requestParameters: ReplaceObjectLabelRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Label>>;\n    public replaceObjectLabel(requestParameters: ReplaceObjectLabelRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const label_id = requestParameters.label_id;\n        if (label_id === null || label_id === undefined) {\n            throw new Error('Required parameter label_id was null or undefined when calling replaceObjectLabel.');\n        }\n        const Label = requestParameters.Label;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_Label>(`${this.configuration.basePath}/v1/labels/${encodeURIComponent(String(label_id))}`,\n                    Label,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Label) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new LabelImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _Launcher, Launcher, LauncherImpl } from '../model/models';\nimport { _ListLaunchersResponse, ListLaunchersResponse, ListLaunchersResponseImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    LaunchersServiceInterface,\n    CreateLauncherRequestParams,\n    DeleteLauncherRequestParams,\n    GetLauncherRequestParams,\n    ListLaunchersRequestParams,\n    ReplaceLauncherRequestParams\n} from './launchers.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class LaunchersService implements LaunchersServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Create a launcher\n     * Create a launcher\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createLauncher(requestParameters: CreateLauncherRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Launcher>;\n    public createLauncher(requestParameters: CreateLauncherRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Launcher>>;\n    public createLauncher(requestParameters: CreateLauncherRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Launcher>>;\n    public createLauncher(requestParameters: CreateLauncherRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const Launcher = requestParameters.Launcher;\n        if (Launcher === null || Launcher === undefined) {\n            throw new Error('Required parameter Launcher was null or undefined when calling createLauncher.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Launcher>(`${this.configuration.basePath}/v1/launchers`,\n                    Launcher,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Launcher) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new LauncherImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a Launcher\n     * Delete a Launcher\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteLauncher(requestParameters: DeleteLauncherRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteLauncher(requestParameters: DeleteLauncherRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteLauncher(requestParameters: DeleteLauncherRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteLauncher(requestParameters: DeleteLauncherRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const launcher_id = requestParameters.launcher_id;\n        if (launcher_id === null || launcher_id === undefined) {\n            throw new Error('Required parameter launcher_id was null or undefined when calling deleteLauncher.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/launchers/${encodeURIComponent(String(launcher_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get a single launcher\n     * Get a single launcher\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getLauncher(requestParameters: GetLauncherRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Launcher>;\n    public getLauncher(requestParameters: GetLauncherRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Launcher>>;\n    public getLauncher(requestParameters: GetLauncherRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Launcher>>;\n    public getLauncher(requestParameters: GetLauncherRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const launcher_id = requestParameters.launcher_id;\n        if (launcher_id === null || launcher_id === undefined) {\n            throw new Error('Required parameter launcher_id was null or undefined when calling getLauncher.');\n        }\n        const org_id = requestParameters.org_id;\n        const expand_resource_members = requestParameters.expand_resource_members;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (expand_resource_members !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>expand_resource_members, 'expand_resource_members');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Launcher>(`${this.configuration.basePath}/v1/launchers/${encodeURIComponent(String(launcher_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Launcher) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new LauncherImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all launchers\n     * Get all launchers\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listLaunchers(requestParameters: ListLaunchersRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListLaunchersResponse>;\n    public listLaunchers(requestParameters: ListLaunchersRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListLaunchersResponse>>;\n    public listLaunchers(requestParameters: ListLaunchersRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListLaunchersResponse>>;\n    public listLaunchers(requestParameters: ListLaunchersRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const expand_resource_members = requestParameters.expand_resource_members;\n        const org_ids = requestParameters.org_ids;\n        const resource_id = requestParameters.resource_id;\n        const page_at_id = requestParameters.page_at_id;\n        const page_on = requestParameters.page_on;\n        const page_at_key = requestParameters.page_at_key;\n        const page_sort = requestParameters.page_sort;\n        const search_direction = requestParameters.search_direction;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (expand_resource_members !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>expand_resource_members, 'expand_resource_members');\n        }\n        if (org_ids) {\n            org_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'org_ids');\n            })\n        }\n        if (resource_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_id, 'resource_id');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (page_on) {\n            page_on.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_on');\n            })\n        }\n        if (page_at_key) {\n            page_at_key.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_at_key');\n            })\n        }\n        if (page_sort) {\n            page_sort.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_sort');\n            })\n        }\n        if (search_direction !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>search_direction, 'search_direction');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListLaunchersResponse>(`${this.configuration.basePath}/v1/launchers`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListLaunchersResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListLaunchersResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create or update a launcher\n     * Create or update a launcher\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceLauncher(requestParameters: ReplaceLauncherRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Launcher>;\n    public replaceLauncher(requestParameters: ReplaceLauncherRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Launcher>>;\n    public replaceLauncher(requestParameters: ReplaceLauncherRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Launcher>>;\n    public replaceLauncher(requestParameters: ReplaceLauncherRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const launcher_id = requestParameters.launcher_id;\n        if (launcher_id === null || launcher_id === undefined) {\n            throw new Error('Required parameter launcher_id was null or undefined when calling replaceLauncher.');\n        }\n        const org_id = requestParameters.org_id;\n        const Launcher = requestParameters.Launcher;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_Launcher>(`${this.configuration.basePath}/v1/launchers/${encodeURIComponent(String(launcher_id))}`,\n                    Launcher,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Launcher) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new LauncherImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _HypotheticalLicenseDetails, HypotheticalLicenseDetails, HypotheticalLicenseDetailsImpl } from '../model/models';\nimport { _HypotheticalLicenseDetailsQuery, HypotheticalLicenseDetailsQuery, HypotheticalLicenseDetailsQueryImpl } from '../model/models';\nimport { _License, License, LicenseImpl } from '../model/models';\nimport { _ListLicenseDetailsResponse, ListLicenseDetailsResponse, ListLicenseDetailsResponseImpl } from '../model/models';\nimport { _ListLicenseEvaluationContextsResponse, ListLicenseEvaluationContextsResponse, ListLicenseEvaluationContextsResponseImpl } from '../model/models';\nimport { _ListLicensesResponse, ListLicensesResponse, ListLicensesResponseImpl } from '../model/models';\nimport { _ListProductTableVersionsResponse, ListProductTableVersionsResponse, ListProductTableVersionsResponseImpl } from '../model/models';\nimport { _ProductTableVersion, ProductTableVersion, ProductTableVersionImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    LicensingServiceInterface,\n    CreateHypotheticalLicenseDetailsQueryRequestParams,\n    CreateLicenseRequestParams,\n    CreateProductTableVersionRequestParams,\n    DeleteLicenseRequestParams,\n    DeleteProductTableVersionRequestParams,\n    GetLicenseRequestParams,\n    GetProductTableVersionRequestParams,\n    ListLicenseDetailsRequestParams,\n    ListLicenseEvaluationContextsRequestParams,\n    ListLicensesRequestParams,\n    ListProductTableVersionsRequestParams,\n    ReplaceLicenseRequestParams,\n    ReplaceProductTableVersionRequestParams\n} from './licensing.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class LicensingService implements LicensingServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Query a hypothetical set of license details\n     * Get all per-org license details matching the query. This will return the actual constraints available to an organisation, taking into account their product, the hypothetical version of the product table, and any overrides applied to their organisation. Multiple organisations\\&#39; constraints may be returned at a time. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createHypotheticalLicenseDetailsQuery(requestParameters: CreateHypotheticalLicenseDetailsQueryRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HypotheticalLicenseDetails>;\n    public createHypotheticalLicenseDetailsQuery(requestParameters: CreateHypotheticalLicenseDetailsQueryRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<HypotheticalLicenseDetails>>;\n    public createHypotheticalLicenseDetailsQuery(requestParameters: CreateHypotheticalLicenseDetailsQueryRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<HypotheticalLicenseDetails>>;\n    public createHypotheticalLicenseDetailsQuery(requestParameters: CreateHypotheticalLicenseDetailsQueryRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const HypotheticalLicenseDetailsQuery = requestParameters.HypotheticalLicenseDetailsQuery;\n        if (HypotheticalLicenseDetailsQuery === null || HypotheticalLicenseDetailsQuery === undefined) {\n            throw new Error('Required parameter HypotheticalLicenseDetailsQuery was null or undefined when calling createHypotheticalLicenseDetailsQuery.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_HypotheticalLicenseDetails>(`${this.configuration.basePath}/v1/license_details/hypothetical`,\n                    HypotheticalLicenseDetailsQuery,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _HypotheticalLicenseDetails) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new HypotheticalLicenseDetailsImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a license\n     * Create a license\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createLicense(requestParameters: CreateLicenseRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<License>;\n    public createLicense(requestParameters: CreateLicenseRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<License>>;\n    public createLicense(requestParameters: CreateLicenseRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<License>>;\n    public createLicense(requestParameters: CreateLicenseRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const License = requestParameters.License;\n        if (License === null || License === undefined) {\n            throw new Error('Required parameter License was null or undefined when calling createLicense.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_License>(`${this.configuration.basePath}/v1/licenses`,\n                    License,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _License) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new LicenseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a product table version\n     * Create a product table version\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createProductTableVersion(requestParameters: CreateProductTableVersionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ProductTableVersion>;\n    public createProductTableVersion(requestParameters: CreateProductTableVersionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ProductTableVersion>>;\n    public createProductTableVersion(requestParameters: CreateProductTableVersionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ProductTableVersion>>;\n    public createProductTableVersion(requestParameters: CreateProductTableVersionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const ProductTableVersion = requestParameters.ProductTableVersion;\n        if (ProductTableVersion === null || ProductTableVersion === undefined) {\n            throw new Error('Required parameter ProductTableVersion was null or undefined when calling createProductTableVersion.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_ProductTableVersion>(`${this.configuration.basePath}/v1/product_table_versions`,\n                    ProductTableVersion,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ProductTableVersion) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ProductTableVersionImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a license\n     * Delete a license\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteLicense(requestParameters: DeleteLicenseRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteLicense(requestParameters: DeleteLicenseRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteLicense(requestParameters: DeleteLicenseRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteLicense(requestParameters: DeleteLicenseRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const license_id = requestParameters.license_id;\n        if (license_id === null || license_id === undefined) {\n            throw new Error('Required parameter license_id was null or undefined when calling deleteLicense.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/licenses/${encodeURIComponent(String(license_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a product table version\n     * Delete a product table version\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteProductTableVersion(requestParameters: DeleteProductTableVersionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteProductTableVersion(requestParameters: DeleteProductTableVersionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteProductTableVersion(requestParameters: DeleteProductTableVersionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteProductTableVersion(requestParameters: DeleteProductTableVersionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const product_table_version_id = requestParameters.product_table_version_id;\n        if (product_table_version_id === null || product_table_version_id === undefined) {\n            throw new Error('Required parameter product_table_version_id was null or undefined when calling deleteProductTableVersion.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/product_table_versions/${encodeURIComponent(String(product_table_version_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get a single license\n     * Get a single license\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getLicense(requestParameters: GetLicenseRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<License>;\n    public getLicense(requestParameters: GetLicenseRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<License>>;\n    public getLicense(requestParameters: GetLicenseRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<License>>;\n    public getLicense(requestParameters: GetLicenseRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const license_id = requestParameters.license_id;\n        if (license_id === null || license_id === undefined) {\n            throw new Error('Required parameter license_id was null or undefined when calling getLicense.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_License>(`${this.configuration.basePath}/v1/licenses/${encodeURIComponent(String(license_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _License) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new LicenseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a single product table version\n     * Get a single product table version\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getProductTableVersion(requestParameters: GetProductTableVersionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ProductTableVersion>;\n    public getProductTableVersion(requestParameters: GetProductTableVersionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ProductTableVersion>>;\n    public getProductTableVersion(requestParameters: GetProductTableVersionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ProductTableVersion>>;\n    public getProductTableVersion(requestParameters: GetProductTableVersionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const product_table_version_id = requestParameters.product_table_version_id;\n        if (product_table_version_id === null || product_table_version_id === undefined) {\n            throw new Error('Required parameter product_table_version_id was null or undefined when calling getProductTableVersion.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ProductTableVersion>(`${this.configuration.basePath}/v1/product_table_versions/${encodeURIComponent(String(product_table_version_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ProductTableVersion) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ProductTableVersionImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all license details\n     * Get all per-org license details matching the query. This will return the actual constraints available to an organisation, taking into account their product, version of the product table, and any overrides applied to their organisation. Multiple organisations\\&#39; constraints may be returned at a time, and paged through using page_at_id. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listLicenseDetails(requestParameters: ListLicenseDetailsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListLicenseDetailsResponse>;\n    public listLicenseDetails(requestParameters: ListLicenseDetailsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListLicenseDetailsResponse>>;\n    public listLicenseDetails(requestParameters: ListLicenseDetailsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListLicenseDetailsResponse>>;\n    public listLicenseDetails(requestParameters: ListLicenseDetailsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const license_id = requestParameters.license_id;\n        const license_ids = requestParameters.license_ids;\n        const page_at_id = requestParameters.page_at_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (license_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>license_id, 'license_id');\n        }\n        if (license_ids) {\n            license_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'license_ids');\n            })\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListLicenseDetailsResponse>(`${this.configuration.basePath}/v1/license_details`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListLicenseDetailsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListLicenseDetailsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get license evaluation context\n     * Get all per-org license evaluation input matching the query. This will return the context dictionary to pass into the evaluation of a license. Multiple organisations\\&#39; input may be returned at a time, and paged through using page_at_id. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listLicenseEvaluationContexts(requestParameters: ListLicenseEvaluationContextsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListLicenseEvaluationContextsResponse>;\n    public listLicenseEvaluationContexts(requestParameters: ListLicenseEvaluationContextsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListLicenseEvaluationContextsResponse>>;\n    public listLicenseEvaluationContexts(requestParameters: ListLicenseEvaluationContextsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListLicenseEvaluationContextsResponse>>;\n    public listLicenseEvaluationContexts(requestParameters: ListLicenseEvaluationContextsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const license_id = requestParameters.license_id;\n        const license_ids = requestParameters.license_ids;\n        const page_at_id = requestParameters.page_at_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (license_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>license_id, 'license_id');\n        }\n        if (license_ids) {\n            license_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'license_ids');\n            })\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListLicenseEvaluationContextsResponse>(`${this.configuration.basePath}/v1/licenses/evaluation_contexts`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListLicenseEvaluationContextsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListLicenseEvaluationContextsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all licenses\n     * Get all Licenses matching the query\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listLicenses(requestParameters: ListLicensesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListLicensesResponse>;\n    public listLicenses(requestParameters: ListLicensesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListLicensesResponse>>;\n    public listLicenses(requestParameters: ListLicensesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListLicensesResponse>>;\n    public listLicenses(requestParameters: ListLicensesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const page_at_id = requestParameters.page_at_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListLicensesResponse>(`${this.configuration.basePath}/v1/licenses`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListLicensesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListLicensesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all product table versions\n     * Get all product table versions matching the query\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listProductTableVersions(requestParameters: ListProductTableVersionsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListProductTableVersionsResponse>;\n    public listProductTableVersions(requestParameters: ListProductTableVersionsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListProductTableVersionsResponse>>;\n    public listProductTableVersions(requestParameters: ListProductTableVersionsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListProductTableVersionsResponse>>;\n    public listProductTableVersions(requestParameters: ListProductTableVersionsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const version = requestParameters.version;\n        const page_at_version = requestParameters.page_at_version;\n        const published = requestParameters.published;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (version !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>version, 'version');\n        }\n        if (page_at_version !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_version, 'page_at_version');\n        }\n        if (published !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>published, 'published');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListProductTableVersionsResponse>(`${this.configuration.basePath}/v1/product_table_versions`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListProductTableVersionsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListProductTableVersionsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create or update a license\n     * Update a license. If subscription_reconcil is set and the product changes, then the system will update the prices in the billing system to align. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceLicense(requestParameters: ReplaceLicenseRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<License>;\n    public replaceLicense(requestParameters: ReplaceLicenseRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<License>>;\n    public replaceLicense(requestParameters: ReplaceLicenseRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<License>>;\n    public replaceLicense(requestParameters: ReplaceLicenseRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const license_id = requestParameters.license_id;\n        if (license_id === null || license_id === undefined) {\n            throw new Error('Required parameter license_id was null or undefined when calling replaceLicense.');\n        }\n        const subscription_reconcile = requestParameters.subscription_reconcile;\n        const License = requestParameters.License;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (subscription_reconcile !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>subscription_reconcile, 'subscription_reconcile');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_License>(`${this.configuration.basePath}/v1/licenses/${encodeURIComponent(String(license_id))}`,\n                    License,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _License) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new LicenseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create or update a product table version\n     * Update a product table version\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceProductTableVersion(requestParameters: ReplaceProductTableVersionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ProductTableVersion>;\n    public replaceProductTableVersion(requestParameters: ReplaceProductTableVersionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ProductTableVersion>>;\n    public replaceProductTableVersion(requestParameters: ReplaceProductTableVersionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ProductTableVersion>>;\n    public replaceProductTableVersion(requestParameters: ReplaceProductTableVersionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const product_table_version_id = requestParameters.product_table_version_id;\n        if (product_table_version_id === null || product_table_version_id === undefined) {\n            throw new Error('Required parameter product_table_version_id was null or undefined when calling replaceProductTableVersion.');\n        }\n        const ProductTableVersion = requestParameters.ProductTableVersion;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_ProductTableVersion>(`${this.configuration.basePath}/v1/product_table_versions/${encodeURIComponent(String(product_table_version_id))}`,\n                    ProductTableVersion,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ProductTableVersion) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ProductTableVersionImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _GuidMetadata, GuidMetadata, GuidMetadataImpl } from '../model/models';\nimport { _ListGuidMetadataResponse, ListGuidMetadataResponse, ListGuidMetadataResponseImpl } from '../model/models';\nimport { _LookupRequest, LookupRequest, LookupRequestImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    LookupsServiceInterface,\n    BulkQueryOrgGuidsRequestParams,\n    LookupOrgGuidRequestParams\n} from './lookups.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class LookupsService implements LookupsServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * List\n     * Gets metadata about requested guids\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public bulkQueryOrgGuids(requestParameters: BulkQueryOrgGuidsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListGuidMetadataResponse>;\n    public bulkQueryOrgGuids(requestParameters: BulkQueryOrgGuidsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListGuidMetadataResponse>>;\n    public bulkQueryOrgGuids(requestParameters: BulkQueryOrgGuidsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListGuidMetadataResponse>>;\n    public bulkQueryOrgGuids(requestParameters: BulkQueryOrgGuidsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const LookupRequest = requestParameters.LookupRequest;\n        if (LookupRequest === null || LookupRequest === undefined) {\n            throw new Error('Required parameter LookupRequest was null or undefined when calling bulkQueryOrgGuids.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_ListGuidMetadataResponse>(`${this.configuration.basePath}/v1/lookups/bulk_query`,\n                    LookupRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListGuidMetadataResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListGuidMetadataResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a guid object lookup in an org\n     * Gets a guid\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public lookupOrgGuid(requestParameters: LookupOrgGuidRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<GuidMetadata>;\n    public lookupOrgGuid(requestParameters: LookupOrgGuidRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<GuidMetadata>>;\n    public lookupOrgGuid(requestParameters: LookupOrgGuidRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<GuidMetadata>>;\n    public lookupOrgGuid(requestParameters: LookupOrgGuidRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling lookupOrgGuid.');\n        }\n        const guid = requestParameters.guid;\n        if (guid === null || guid === undefined) {\n            throw new Error('Required parameter guid was null or undefined when calling lookupOrgGuid.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_GuidMetadata>(`${this.configuration.basePath}/v1/lookups/${encodeURIComponent(String(org_id))}/${encodeURIComponent(String(guid))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _GuidMetadata) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new GuidMetadataImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _InboxItem, InboxItem, InboxItemImpl } from '../model/models';\nimport { _ListInboxItemsResponse, ListInboxItemsResponse, ListInboxItemsResponseImpl } from '../model/models';\nimport { _ListMessageEndpointsResponse, ListMessageEndpointsResponse, ListMessageEndpointsResponseImpl } from '../model/models';\nimport { _Message, Message, MessageImpl } from '../model/models';\nimport { _MessageEndpoint, MessageEndpoint, MessageEndpointImpl } from '../model/models';\nimport { _MessageEndpointType, MessageEndpointType, MessageEndpointTypeImpl } from '../model/models';\nimport { _MessageEndpointsConfig, MessageEndpointsConfig, MessageEndpointsConfigImpl } from '../model/models';\nimport { _MessageSendRequest, MessageSendRequest, MessageSendRequestImpl } from '../model/models';\nimport { _MessageSendResponse, MessageSendResponse, MessageSendResponseImpl } from '../model/models';\nimport { _MessageTag, MessageTag, MessageTagImpl } from '../model/models';\nimport { _MessagesBulkDeleteRequest, MessagesBulkDeleteRequest, MessagesBulkDeleteRequestImpl } from '../model/models';\nimport { _MessagesBulkDeleteResponse, MessagesBulkDeleteResponse, MessagesBulkDeleteResponseImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    MessagesServiceInterface,\n    BulkDeleteMessagesRequestParams,\n    CreateMessageRequestParams,\n    CreateRoutedMessageRequestParams,\n    CreateUserMessageRequestParams,\n    DeleteInboxItemRequestParams,\n    DeleteMessageEndpointRequestParams,\n    GetInboxItemRequestParams,\n    GetMessageEndpointRequestParams,\n    ListInboxItemsRequestParams,\n    ListMessageEndpointsRequestParams,\n    ReplaceInboxItemRequestParams,\n    ReplaceMessageEndpointRequestParams,\n    UpdateMessageEndpointRequestParams\n} from './messages.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class MessagesService implements MessagesServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Delete a list of messages and inbox items asociated to it.\n     * Delete a list of messages and all associated inbox items. You can only delete so many messages in one request, to avoid long-running tasks that can never complete. To ensure all requests are deleted, iterate until the returned number of deleted messages is 0. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public bulkDeleteMessages(requestParameters: BulkDeleteMessagesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<MessagesBulkDeleteResponse>;\n    public bulkDeleteMessages(requestParameters: BulkDeleteMessagesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<MessagesBulkDeleteResponse>>;\n    public bulkDeleteMessages(requestParameters: BulkDeleteMessagesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<MessagesBulkDeleteResponse>>;\n    public bulkDeleteMessages(requestParameters: BulkDeleteMessagesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const MessagesBulkDeleteRequest = requestParameters.MessagesBulkDeleteRequest;\n        if (MessagesBulkDeleteRequest === null || MessagesBulkDeleteRequest === undefined) {\n            throw new Error('Required parameter MessagesBulkDeleteRequest was null or undefined when calling bulkDeleteMessages.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_MessagesBulkDeleteResponse>(`${this.configuration.basePath}/v1/messages/bulk_delete`,\n                    MessagesBulkDeleteRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _MessagesBulkDeleteResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new MessagesBulkDeleteResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Send a message to a specific message endpoint.\n     * Send a message to a specific message endpoint.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createMessage(requestParameters: CreateMessageRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Message>;\n    public createMessage(requestParameters: CreateMessageRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Message>>;\n    public createMessage(requestParameters: CreateMessageRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Message>>;\n    public createMessage(requestParameters: CreateMessageRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const message_endpoint_id = requestParameters.message_endpoint_id;\n        if (message_endpoint_id === null || message_endpoint_id === undefined) {\n            throw new Error('Required parameter message_endpoint_id was null or undefined when calling createMessage.');\n        }\n        const Message = requestParameters.Message;\n        if (Message === null || Message === undefined) {\n            throw new Error('Required parameter Message was null or undefined when calling createMessage.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Message>(`${this.configuration.basePath}/v1/messages/${encodeURIComponent(String(message_endpoint_id))}/send`,\n                    Message,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Message) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new MessageImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Send one or more messages, letting the system choose how to deliver it\n     * Send one or more messages, leting the system choose to which endpoints to send it, based on properties of the message and the user\\&#39;s configuration. Each message can be associated with multiple addresses, each of which target a user. Note that some users, such as a group, may represent multiple recipients, in which case the message will be sent to users represented by the addressed user. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createRoutedMessage(requestParameters: CreateRoutedMessageRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<MessageSendResponse>;\n    public createRoutedMessage(requestParameters: CreateRoutedMessageRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<MessageSendResponse>>;\n    public createRoutedMessage(requestParameters: CreateRoutedMessageRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<MessageSendResponse>>;\n    public createRoutedMessage(requestParameters: CreateRoutedMessageRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const MessageSendRequest = requestParameters.MessageSendRequest;\n        if (MessageSendRequest === null || MessageSendRequest === undefined) {\n            throw new Error('Required parameter MessageSendRequest was null or undefined when calling createRoutedMessage.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_MessageSendResponse>(`${this.configuration.basePath}/v1/messages/send_routed`,\n                    MessageSendRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _MessageSendResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new MessageSendResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Send a message to a user on all (optionally of a type) endpoints.\n     * Send a message to a user on all (optionally of a type) endpoints.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createUserMessage(requestParameters: CreateUserMessageRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Message>;\n    public createUserMessage(requestParameters: CreateUserMessageRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Message>>;\n    public createUserMessage(requestParameters: CreateUserMessageRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Message>>;\n    public createUserMessage(requestParameters: CreateUserMessageRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling createUserMessage.');\n        }\n        const Message = requestParameters.Message;\n        if (Message === null || Message === undefined) {\n            throw new Error('Required parameter Message was null or undefined when calling createUserMessage.');\n        }\n        const message_endpoint_type = requestParameters.message_endpoint_type;\n        const address = requestParameters.address;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (message_endpoint_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>message_endpoint_type, 'message_endpoint_type');\n        }\n        if (address !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>address, 'address');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Message>(`${this.configuration.basePath}/v1/messages/user/${encodeURIComponent(String(user_id))}/send`,\n                    Message,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Message) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new MessageImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete an inbox item\n     * Delete a specific inbox item\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteInboxItem(requestParameters: DeleteInboxItemRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteInboxItem(requestParameters: DeleteInboxItemRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteInboxItem(requestParameters: DeleteInboxItemRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteInboxItem(requestParameters: DeleteInboxItemRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling deleteInboxItem.');\n        }\n        const inbox_item_id = requestParameters.inbox_item_id;\n        if (inbox_item_id === null || inbox_item_id === undefined) {\n            throw new Error('Required parameter inbox_item_id was null or undefined when calling deleteInboxItem.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/inboxes/${encodeURIComponent(String(user_id))}/items/${encodeURIComponent(String(inbox_item_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a messaging endpoint\n     * Delete a messaging endpoint\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteMessageEndpoint(requestParameters: DeleteMessageEndpointRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteMessageEndpoint(requestParameters: DeleteMessageEndpointRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteMessageEndpoint(requestParameters: DeleteMessageEndpointRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteMessageEndpoint(requestParameters: DeleteMessageEndpointRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const message_endpoint_id = requestParameters.message_endpoint_id;\n        if (message_endpoint_id === null || message_endpoint_id === undefined) {\n            throw new Error('Required parameter message_endpoint_id was null or undefined when calling deleteMessageEndpoint.');\n        }\n        const user_id = requestParameters.user_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/messages/${encodeURIComponent(String(message_endpoint_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get an inbox item\n     * Get a specific inbox item\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getInboxItem(requestParameters: GetInboxItemRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<InboxItem>;\n    public getInboxItem(requestParameters: GetInboxItemRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<InboxItem>>;\n    public getInboxItem(requestParameters: GetInboxItemRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<InboxItem>>;\n    public getInboxItem(requestParameters: GetInboxItemRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling getInboxItem.');\n        }\n        const inbox_item_id = requestParameters.inbox_item_id;\n        if (inbox_item_id === null || inbox_item_id === undefined) {\n            throw new Error('Required parameter inbox_item_id was null or undefined when calling getInboxItem.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_InboxItem>(`${this.configuration.basePath}/v1/inboxes/${encodeURIComponent(String(user_id))}/items/${encodeURIComponent(String(inbox_item_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _InboxItem) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new InboxItemImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a message endpoint\n     * Get a message endpoint\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getMessageEndpoint(requestParameters: GetMessageEndpointRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<MessageEndpoint>;\n    public getMessageEndpoint(requestParameters: GetMessageEndpointRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<MessageEndpoint>>;\n    public getMessageEndpoint(requestParameters: GetMessageEndpointRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<MessageEndpoint>>;\n    public getMessageEndpoint(requestParameters: GetMessageEndpointRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const message_endpoint_id = requestParameters.message_endpoint_id;\n        if (message_endpoint_id === null || message_endpoint_id === undefined) {\n            throw new Error('Required parameter message_endpoint_id was null or undefined when calling getMessageEndpoint.');\n        }\n        const user_id = requestParameters.user_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_MessageEndpoint>(`${this.configuration.basePath}/v1/messages/${encodeURIComponent(String(message_endpoint_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _MessageEndpoint) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new MessageEndpointImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a list of inbox items items and information about the inbox\n     * Get a list of inbox items and information about the inbox for a user. By default only shows unexpired items. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listInboxItems(requestParameters: ListInboxItemsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListInboxItemsResponse>;\n    public listInboxItems(requestParameters: ListInboxItemsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListInboxItemsResponse>>;\n    public listInboxItems(requestParameters: ListInboxItemsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListInboxItemsResponse>>;\n    public listInboxItems(requestParameters: ListInboxItemsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling listInboxItems.');\n        }\n        const org_id = requestParameters.org_id;\n        const limit = requestParameters.limit;\n        const message_type = requestParameters.message_type;\n        const message_class = requestParameters.message_class;\n        const message_class_list = requestParameters.message_class_list;\n        const page_at_id = requestParameters.page_at_id;\n        const page_at_received_date = requestParameters.page_at_received_date;\n        const unread = requestParameters.unread;\n        const expired = requestParameters.expired;\n        const tag = requestParameters.tag;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (message_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>message_type, 'message_type');\n        }\n        if (message_class !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>message_class, 'message_class');\n        }\n        if (message_class_list) {\n            message_class_list.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'message_class_list');\n            })\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (page_at_received_date !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_received_date, 'page_at_received_date');\n        }\n        if (unread !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>unread, 'unread');\n        }\n        if (expired !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>expired, 'expired');\n        }\n        if (tag !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>tag, 'tag');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListInboxItemsResponse>(`${this.configuration.basePath}/v1/inboxes/${encodeURIComponent(String(user_id))}/items`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListInboxItemsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListInboxItemsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all message endpoints (all users or a single user)\n     * List all message endpoints (all users or a single user)\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listMessageEndpoints(requestParameters: ListMessageEndpointsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListMessageEndpointsResponse>;\n    public listMessageEndpoints(requestParameters: ListMessageEndpointsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListMessageEndpointsResponse>>;\n    public listMessageEndpoints(requestParameters: ListMessageEndpointsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListMessageEndpointsResponse>>;\n    public listMessageEndpoints(requestParameters: ListMessageEndpointsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        const limit = requestParameters.limit;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListMessageEndpointsResponse>(`${this.configuration.basePath}/v1/messages`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListMessageEndpointsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListMessageEndpointsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get the config of the endpoint-types (e.g. public keys etc).\n     * Get the config of the endpoint-types (e.g. public keys etc).\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listMessagesConfig(observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<MessageEndpointsConfig>;\n    public listMessagesConfig(observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<MessageEndpointsConfig>>;\n    public listMessagesConfig(observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<MessageEndpointsConfig>>;\n    public listMessagesConfig(observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n        return of(undefined).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_MessageEndpointsConfig>(`${this.configuration.basePath}/v1/messages/config`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _MessageEndpointsConfig) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new MessageEndpointsConfigImpl(response)\n            })\n        );\n    }\n\n    /**\n     * replace an inbox item\n     * update an inbox item\\&#39;s writeable attributes\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceInboxItem(requestParameters: ReplaceInboxItemRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<InboxItem>;\n    public replaceInboxItem(requestParameters: ReplaceInboxItemRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<InboxItem>>;\n    public replaceInboxItem(requestParameters: ReplaceInboxItemRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<InboxItem>>;\n    public replaceInboxItem(requestParameters: ReplaceInboxItemRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling replaceInboxItem.');\n        }\n        const inbox_item_id = requestParameters.inbox_item_id;\n        if (inbox_item_id === null || inbox_item_id === undefined) {\n            throw new Error('Required parameter inbox_item_id was null or undefined when calling replaceInboxItem.');\n        }\n        const InboxItem = requestParameters.InboxItem;\n        if (InboxItem === null || InboxItem === undefined) {\n            throw new Error('Required parameter InboxItem was null or undefined when calling replaceInboxItem.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_InboxItem>(`${this.configuration.basePath}/v1/inboxes/${encodeURIComponent(String(user_id))}/items/${encodeURIComponent(String(inbox_item_id))}`,\n                    InboxItem,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _InboxItem) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new InboxItemImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a messaging endpoint\n     * Update a messaging endpoint\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceMessageEndpoint(requestParameters: ReplaceMessageEndpointRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<MessageEndpoint>;\n    public replaceMessageEndpoint(requestParameters: ReplaceMessageEndpointRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<MessageEndpoint>>;\n    public replaceMessageEndpoint(requestParameters: ReplaceMessageEndpointRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<MessageEndpoint>>;\n    public replaceMessageEndpoint(requestParameters: ReplaceMessageEndpointRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const message_endpoint_id = requestParameters.message_endpoint_id;\n        if (message_endpoint_id === null || message_endpoint_id === undefined) {\n            throw new Error('Required parameter message_endpoint_id was null or undefined when calling replaceMessageEndpoint.');\n        }\n        const MessageEndpoint = requestParameters.MessageEndpoint;\n        if (MessageEndpoint === null || MessageEndpoint === undefined) {\n            throw new Error('Required parameter MessageEndpoint was null or undefined when calling replaceMessageEndpoint.');\n        }\n        const user_id = requestParameters.user_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_MessageEndpoint>(`${this.configuration.basePath}/v1/messages/${encodeURIComponent(String(message_endpoint_id))}`,\n                    MessageEndpoint,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _MessageEndpoint) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new MessageEndpointImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Register a messaging endpoint on a user.\n     * Register a messaging endpoint on a user.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public updateMessageEndpoint(requestParameters: UpdateMessageEndpointRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<MessageEndpoint>;\n    public updateMessageEndpoint(requestParameters: UpdateMessageEndpointRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<MessageEndpoint>>;\n    public updateMessageEndpoint(requestParameters: UpdateMessageEndpointRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<MessageEndpoint>>;\n    public updateMessageEndpoint(requestParameters: UpdateMessageEndpointRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling updateMessageEndpoint.');\n        }\n        const MessageEndpoint = requestParameters.MessageEndpoint;\n        if (MessageEndpoint === null || MessageEndpoint === undefined) {\n            throw new Error('Required parameter MessageEndpoint was null or undefined when calling updateMessageEndpoint.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_MessageEndpoint>(`${this.configuration.basePath}/v1/messages/register/${encodeURIComponent(String(user_id))}`,\n                    MessageEndpoint,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _MessageEndpoint) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new MessageEndpointImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _ListActiveUsersResponse, ListActiveUsersResponse, ListActiveUsersResponseImpl } from '../model/models';\nimport { _ListTopUsersResponse, ListTopUsersResponse, ListTopUsersResponseImpl } from '../model/models';\nimport { _ResourceTypeEnum, ResourceTypeEnum, ResourceTypeEnumImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    MetricsServiceInterface,\n    ListActiveUsersRequestParams,\n    ListTopUsersRequestParams\n} from './metrics.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class MetricsService implements MetricsServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * View number of active users\n     * View number of active users\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listActiveUsers(requestParameters: ListActiveUsersRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListActiveUsersResponse>;\n    public listActiveUsers(requestParameters: ListActiveUsersRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListActiveUsersResponse>>;\n    public listActiveUsers(requestParameters: ListActiveUsersRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListActiveUsersResponse>>;\n    public listActiveUsers(requestParameters: ListActiveUsersRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling listActiveUsers.');\n        }\n        const dt_from = requestParameters.dt_from;\n        const dt_to = requestParameters.dt_to;\n        const app_id = requestParameters.app_id;\n        const sub_org_id = requestParameters.sub_org_id;\n        const app_name = requestParameters.app_name;\n        const organisation = requestParameters.organisation;\n        const interval = requestParameters.interval;\n        const resource_type = requestParameters.resource_type;\n        const resource_name = requestParameters.resource_name;\n        const resource_id = requestParameters.resource_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (dt_from !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>dt_from, 'dt_from');\n        }\n        if (dt_to !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>dt_to, 'dt_to');\n        }\n        if (app_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>app_id, 'app_id');\n        }\n        if (sub_org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>sub_org_id, 'sub_org_id');\n        }\n        if (app_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>app_name, 'app_name');\n        }\n        if (organisation !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>organisation, 'organisation');\n        }\n        if (interval !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>interval, 'interval');\n        }\n        if (resource_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_type, 'resource_type');\n        }\n        if (resource_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_name, 'resource_name');\n        }\n        if (resource_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_id, 'resource_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListActiveUsersResponse>(`${this.configuration.basePath}/v1/metrics/${encodeURIComponent(String(org_id))}/active_users`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListActiveUsersResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListActiveUsersResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * View top users\n     * View top users\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listTopUsers(requestParameters: ListTopUsersRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListTopUsersResponse>;\n    public listTopUsers(requestParameters: ListTopUsersRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListTopUsersResponse>>;\n    public listTopUsers(requestParameters: ListTopUsersRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListTopUsersResponse>>;\n    public listTopUsers(requestParameters: ListTopUsersRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling listTopUsers.');\n        }\n        const dt_from = requestParameters.dt_from;\n        const dt_to = requestParameters.dt_to;\n        const app_id = requestParameters.app_id;\n        const sub_org_id = requestParameters.sub_org_id;\n        const app_name = requestParameters.app_name;\n        const organisation = requestParameters.organisation;\n        const interval = requestParameters.interval;\n        const limit = requestParameters.limit;\n        const resource_type = requestParameters.resource_type;\n        const resource_name = requestParameters.resource_name;\n        const resource_id = requestParameters.resource_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (dt_from !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>dt_from, 'dt_from');\n        }\n        if (dt_to !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>dt_to, 'dt_to');\n        }\n        if (app_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>app_id, 'app_id');\n        }\n        if (sub_org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>sub_org_id, 'sub_org_id');\n        }\n        if (app_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>app_name, 'app_name');\n        }\n        if (organisation !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>organisation, 'organisation');\n        }\n        if (interval !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>interval, 'interval');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (resource_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_type, 'resource_type');\n        }\n        if (resource_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_name, 'resource_name');\n        }\n        if (resource_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_id, 'resource_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListTopUsersResponse>(`${this.configuration.basePath}/v1/metrics/${encodeURIComponent(String(org_id))}/top_users`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListTopUsersResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListTopUsersResponseImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _BillingAccount, BillingAccount, BillingAccountImpl } from '../model/models';\nimport { _BillingCheckoutSession, BillingCheckoutSession, BillingCheckoutSessionImpl } from '../model/models';\nimport { _BillingPortalLink, BillingPortalLink, BillingPortalLinkImpl } from '../model/models';\nimport { _BillingSubscriptionCancelDetail, BillingSubscriptionCancelDetail, BillingSubscriptionCancelDetailImpl } from '../model/models';\nimport { _CreateBillingCheckoutSession, CreateBillingCheckoutSession, CreateBillingCheckoutSessionImpl } from '../model/models';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _ListDomainsResponse, ListDomainsResponse, ListDomainsResponseImpl } from '../model/models';\nimport { _ListFeaturesResponse, ListFeaturesResponse, ListFeaturesResponseImpl } from '../model/models';\nimport { _ListGuidMetadataResponse, ListGuidMetadataResponse, ListGuidMetadataResponseImpl } from '../model/models';\nimport { _ListOrgsResponse, ListOrgsResponse, ListOrgsResponseImpl } from '../model/models';\nimport { _OrgFixup, OrgFixup, OrgFixupImpl } from '../model/models';\nimport { _Organisation, Organisation, OrganisationImpl } from '../model/models';\nimport { _OrganisationAdmin, OrganisationAdmin, OrganisationAdminImpl } from '../model/models';\nimport { _OrganisationCapabilities, OrganisationCapabilities, OrganisationCapabilitiesImpl } from '../model/models';\nimport { _OrganisationStatus, OrganisationStatus, OrganisationStatusImpl } from '../model/models';\nimport { _OrganisationSystemOptions, OrganisationSystemOptions, OrganisationSystemOptionsImpl } from '../model/models';\nimport { _ReconcileOrgDefaultPolicyRequest, ReconcileOrgDefaultPolicyRequest, ReconcileOrgDefaultPolicyRequestImpl } from '../model/models';\nimport { _ReconcileOrgDefaultPolicyResponse, ReconcileOrgDefaultPolicyResponse, ReconcileOrgDefaultPolicyResponseImpl } from '../model/models';\nimport { _ReconcileSubOrgIssuerRequest, ReconcileSubOrgIssuerRequest, ReconcileSubOrgIssuerRequestImpl } from '../model/models';\nimport { _UsageMetrics, UsageMetrics, UsageMetricsImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    OrganisationsServiceInterface,\n    CancelSubscriptionRequestParams,\n    CreateBillingPortalLinkRequestParams,\n    CreateCheckoutSessionRequestParams,\n    CreateOrgRequestParams,\n    CreateReconcileOrgDefaultPolicyRequestParams,\n    CreateSubOrgRequestParams,\n    DeleteSubOrgRequestParams,\n    GetInherentCapabilitiesRequestParams,\n    GetOrgRequestParams,\n    GetOrgBillingAccountRequestParams,\n    GetOrgFeaturesRequestParams,\n    GetOrgStatusRequestParams,\n    GetSystemOptionsRequestParams,\n    GetUsageMetricsRequestParams,\n    ListEmailDomainsRequestParams,\n    ListOrgGuidMappingRequestParams,\n    ListOrgsRequestParams,\n    ListSubOrgsRequestParams,\n    OrgFixupRequestParams,\n    ReconcileSubOrgIssuerRequestParams,\n    ReplaceOrgRequestParams,\n    ReplaceSystemOptionsRequestParams,\n    SetInherentCapabilitiesRequestParams,\n    ValidateNewOrgRequestParams\n} from './organisations.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class OrganisationsService implements OrganisationsServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Cancel the billing subscription for this organisation\n     * Cancel the billing subscription for this organisation\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public cancelSubscription(requestParameters: CancelSubscriptionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<BillingSubscriptionCancelDetail>;\n    public cancelSubscription(requestParameters: CancelSubscriptionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<BillingSubscriptionCancelDetail>>;\n    public cancelSubscription(requestParameters: CancelSubscriptionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<BillingSubscriptionCancelDetail>>;\n    public cancelSubscription(requestParameters: CancelSubscriptionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling cancelSubscription.');\n        }\n        const BillingSubscriptionCancelDetail = requestParameters.BillingSubscriptionCancelDetail;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_BillingSubscriptionCancelDetail>(`${this.configuration.basePath}/v1/orgs/${encodeURIComponent(String(org_id))}/cancel_subscription`,\n                    BillingSubscriptionCancelDetail,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _BillingSubscriptionCancelDetail) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new BillingSubscriptionCancelDetailImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a link to the billing portal\n     * Creates a temporary, one-time-use link to the billing system\\&#39;s self-serve portal. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createBillingPortalLink(requestParameters: CreateBillingPortalLinkRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<BillingPortalLink>;\n    public createBillingPortalLink(requestParameters: CreateBillingPortalLinkRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<BillingPortalLink>>;\n    public createBillingPortalLink(requestParameters: CreateBillingPortalLinkRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<BillingPortalLink>>;\n    public createBillingPortalLink(requestParameters: CreateBillingPortalLinkRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling createBillingPortalLink.');\n        }\n        const BillingPortalLink = requestParameters.BillingPortalLink;\n        if (BillingPortalLink === null || BillingPortalLink === undefined) {\n            throw new Error('Required parameter BillingPortalLink was null or undefined when calling createBillingPortalLink.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_BillingPortalLink>(`${this.configuration.basePath}/v1/orgs/${encodeURIComponent(String(org_id))}/billing_portal_links`,\n                    BillingPortalLink,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _BillingPortalLink) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new BillingPortalLinkImpl(response)\n            })\n        );\n    }\n\n    /**\n     * utility to upgrade organisations\n     * utility to upgrade organisations\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createBlockingUpgradeOrgsTask(observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public createBlockingUpgradeOrgsTask(observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public createBlockingUpgradeOrgsTask(observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public createBlockingUpgradeOrgsTask(observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<any>(`${this.configuration.basePath}/v1/orgs/upgrade`,\n                    null,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Create a session checkout\n     * Create a session checkout\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createCheckoutSession(requestParameters: CreateCheckoutSessionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<BillingCheckoutSession>;\n    public createCheckoutSession(requestParameters: CreateCheckoutSessionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<BillingCheckoutSession>>;\n    public createCheckoutSession(requestParameters: CreateCheckoutSessionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<BillingCheckoutSession>>;\n    public createCheckoutSession(requestParameters: CreateCheckoutSessionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling createCheckoutSession.');\n        }\n        const CreateBillingCheckoutSession = requestParameters.CreateBillingCheckoutSession;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_BillingCheckoutSession>(`${this.configuration.basePath}/v1/orgs/${encodeURIComponent(String(org_id))}/billing_checkout`,\n                    CreateBillingCheckoutSession,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _BillingCheckoutSession) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new BillingCheckoutSessionImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create an organisation\n     * Create an organisation\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createOrg(requestParameters: CreateOrgRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Organisation>;\n    public createOrg(requestParameters: CreateOrgRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Organisation>>;\n    public createOrg(requestParameters: CreateOrgRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Organisation>>;\n    public createOrg(requestParameters: CreateOrgRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const OrganisationAdmin = requestParameters.OrganisationAdmin;\n        if (OrganisationAdmin === null || OrganisationAdmin === undefined) {\n            throw new Error('Required parameter OrganisationAdmin was null or undefined when calling createOrg.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Organisation>(`${this.configuration.basePath}/v1/orgs`,\n                    OrganisationAdmin,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Organisation) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new OrganisationImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Reconciles one or more org\\&#39;s default policies\n     * Ensures that the requested organisations have the proper defaults for their policies. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createReconcileOrgDefaultPolicy(requestParameters: CreateReconcileOrgDefaultPolicyRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ReconcileOrgDefaultPolicyResponse>;\n    public createReconcileOrgDefaultPolicy(requestParameters: CreateReconcileOrgDefaultPolicyRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ReconcileOrgDefaultPolicyResponse>>;\n    public createReconcileOrgDefaultPolicy(requestParameters: CreateReconcileOrgDefaultPolicyRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ReconcileOrgDefaultPolicyResponse>>;\n    public createReconcileOrgDefaultPolicy(requestParameters: CreateReconcileOrgDefaultPolicyRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const ReconcileOrgDefaultPolicyRequest = requestParameters.ReconcileOrgDefaultPolicyRequest;\n        if (ReconcileOrgDefaultPolicyRequest === null || ReconcileOrgDefaultPolicyRequest === undefined) {\n            throw new Error('Required parameter ReconcileOrgDefaultPolicyRequest was null or undefined when calling createReconcileOrgDefaultPolicy.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_ReconcileOrgDefaultPolicyResponse>(`${this.configuration.basePath}/v1/orgs/reconcile_org_default_policy`,\n                    ReconcileOrgDefaultPolicyRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ReconcileOrgDefaultPolicyResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ReconcileOrgDefaultPolicyResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a sub organisation\n     * Create a sub organisation\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createSubOrg(requestParameters: CreateSubOrgRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Organisation>;\n    public createSubOrg(requestParameters: CreateSubOrgRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Organisation>>;\n    public createSubOrg(requestParameters: CreateSubOrgRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Organisation>>;\n    public createSubOrg(requestParameters: CreateSubOrgRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling createSubOrg.');\n        }\n        const Organisation = requestParameters.Organisation;\n        if (Organisation === null || Organisation === undefined) {\n            throw new Error('Required parameter Organisation was null or undefined when calling createSubOrg.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Organisation>(`${this.configuration.basePath}/v1/orgs/${encodeURIComponent(String(org_id))}/orgs`,\n                    Organisation,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Organisation) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new OrganisationImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a sub organisation\n     * Delete a sub organisation\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteSubOrg(requestParameters: DeleteSubOrgRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteSubOrg(requestParameters: DeleteSubOrgRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteSubOrg(requestParameters: DeleteSubOrgRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteSubOrg(requestParameters: DeleteSubOrgRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling deleteSubOrg.');\n        }\n        const sub_org_id = requestParameters.sub_org_id;\n        if (sub_org_id === null || sub_org_id === undefined) {\n            throw new Error('Required parameter sub_org_id was null or undefined when calling deleteSubOrg.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/orgs/${encodeURIComponent(String(org_id))}/orgs/${encodeURIComponent(String(sub_org_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get the inherent capabilities for an org\n     * Gets the inherent capabilities for an organisation. Inherent capabilities are what an organisation can do. They cannot be changed by the organisation. Instead, they serve to limit the configurable capabilities of the organisation. An organisation\\&#39;s capabilities are the intersection of its inherent_capabilities and its configured_capabilities. If an organisation has not configured capabilities, they will be inherited from the parent. Similarly, if an organisation has no enabled inherent_capabilities they will be inherited from the parent. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getInherentCapabilities(requestParameters: GetInherentCapabilitiesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<OrganisationCapabilities>;\n    public getInherentCapabilities(requestParameters: GetInherentCapabilitiesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<OrganisationCapabilities>>;\n    public getInherentCapabilities(requestParameters: GetInherentCapabilitiesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<OrganisationCapabilities>>;\n    public getInherentCapabilities(requestParameters: GetInherentCapabilitiesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling getInherentCapabilities.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n        return of(undefined).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_OrganisationCapabilities>(`${this.configuration.basePath}/v1/orgs/${encodeURIComponent(String(org_id))}/inherent_capabilities`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _OrganisationCapabilities) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new OrganisationCapabilitiesImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a single organisation\n     * Get a single organisation\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getOrg(requestParameters: GetOrgRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Organisation>;\n    public getOrg(requestParameters: GetOrgRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Organisation>>;\n    public getOrg(requestParameters: GetOrgRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Organisation>>;\n    public getOrg(requestParameters: GetOrgRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling getOrg.');\n        }\n        const get_system_options = requestParameters.get_system_options;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (get_system_options !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_system_options, 'get_system_options');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Organisation>(`${this.configuration.basePath}/v1/orgs/${encodeURIComponent(String(org_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Organisation) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new OrganisationImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get the billing account associated with the organisation\n     * Get the billing account associated with the organisation\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getOrgBillingAccount(requestParameters: GetOrgBillingAccountRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<BillingAccount>;\n    public getOrgBillingAccount(requestParameters: GetOrgBillingAccountRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<BillingAccount>>;\n    public getOrgBillingAccount(requestParameters: GetOrgBillingAccountRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<BillingAccount>>;\n    public getOrgBillingAccount(requestParameters: GetOrgBillingAccountRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling getOrgBillingAccount.');\n        }\n        const get_subscription_data = requestParameters.get_subscription_data;\n        const get_customer_data = requestParameters.get_customer_data;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (get_subscription_data !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_subscription_data, 'get_subscription_data');\n        }\n        if (get_customer_data !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_customer_data, 'get_customer_data');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_BillingAccount>(`${this.configuration.basePath}/v1/orgs/${encodeURIComponent(String(org_id))}/billing_account`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _BillingAccount) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new BillingAccountImpl(response)\n            })\n        );\n    }\n\n    /**\n     * all features associated with organisation\n     * all features associated with organisation\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getOrgFeatures(requestParameters: GetOrgFeaturesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListFeaturesResponse>;\n    public getOrgFeatures(requestParameters: GetOrgFeaturesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListFeaturesResponse>>;\n    public getOrgFeatures(requestParameters: GetOrgFeaturesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListFeaturesResponse>>;\n    public getOrgFeatures(requestParameters: GetOrgFeaturesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling getOrgFeatures.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListFeaturesResponse>(`${this.configuration.basePath}/v1/orgs/${encodeURIComponent(String(org_id))}/features`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListFeaturesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListFeaturesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get the status of an organisation\n     * Get the status of an organisation\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getOrgStatus(requestParameters: GetOrgStatusRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<OrganisationStatus>;\n    public getOrgStatus(requestParameters: GetOrgStatusRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<OrganisationStatus>>;\n    public getOrgStatus(requestParameters: GetOrgStatusRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<OrganisationStatus>>;\n    public getOrgStatus(requestParameters: GetOrgStatusRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling getOrgStatus.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_OrganisationStatus>(`${this.configuration.basePath}/v1/orgs/${encodeURIComponent(String(org_id))}/status`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _OrganisationStatus) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new OrganisationStatusImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get organisation system options\n     * Get organisation system options\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getSystemOptions(requestParameters: GetSystemOptionsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<OrganisationSystemOptions>;\n    public getSystemOptions(requestParameters: GetSystemOptionsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<OrganisationSystemOptions>>;\n    public getSystemOptions(requestParameters: GetSystemOptionsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<OrganisationSystemOptions>>;\n    public getSystemOptions(requestParameters: GetSystemOptionsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling getSystemOptions.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_OrganisationSystemOptions>(`${this.configuration.basePath}/v1/orgs/${encodeURIComponent(String(org_id))}/system_options`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _OrganisationSystemOptions) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new OrganisationSystemOptionsImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all usage metrics for an organisation\n     * Get all usage metrics for an organisation\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getUsageMetrics(requestParameters: GetUsageMetricsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UsageMetrics>;\n    public getUsageMetrics(requestParameters: GetUsageMetricsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UsageMetrics>>;\n    public getUsageMetrics(requestParameters: GetUsageMetricsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UsageMetrics>>;\n    public getUsageMetrics(requestParameters: GetUsageMetricsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling getUsageMetrics.');\n        }\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_UsageMetrics>(`${this.configuration.basePath}/v1/orgs/usage_metrics`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UsageMetrics) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UsageMetricsImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all unique email domains for users that are inside an organisation\n     * List all unique email domains for users that are inside an organisation\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listEmailDomains(requestParameters: ListEmailDomainsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListDomainsResponse>;\n    public listEmailDomains(requestParameters: ListEmailDomainsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListDomainsResponse>>;\n    public listEmailDomains(requestParameters: ListEmailDomainsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListDomainsResponse>>;\n    public listEmailDomains(requestParameters: ListEmailDomainsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling listEmailDomains.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListDomainsResponse>(`${this.configuration.basePath}/v1/orgs/${encodeURIComponent(String(org_id))}/domains`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListDomainsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListDomainsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all org guids and a unique name mapping\n     * Get all org guids and a unique name mapping\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listOrgGuidMapping(requestParameters: ListOrgGuidMappingRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListGuidMetadataResponse>;\n    public listOrgGuidMapping(requestParameters: ListOrgGuidMappingRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListGuidMetadataResponse>>;\n    public listOrgGuidMapping(requestParameters: ListOrgGuidMappingRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListGuidMetadataResponse>>;\n    public listOrgGuidMapping(requestParameters: ListOrgGuidMappingRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const limit = requestParameters.limit;\n        const previous_guid = requestParameters.previous_guid;\n        const updated_since = requestParameters.updated_since;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (previous_guid !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>previous_guid, 'previous_guid');\n        }\n        if (updated_since !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>updated_since, 'updated_since');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListGuidMetadataResponse>(`${this.configuration.basePath}/v1/orgs/guids`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListGuidMetadataResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListGuidMetadataResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all organisations\n     * Get all organisations\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listOrgs(requestParameters: ListOrgsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListOrgsResponse>;\n    public listOrgs(requestParameters: ListOrgsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListOrgsResponse>>;\n    public listOrgs(requestParameters: ListOrgsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListOrgsResponse>>;\n    public listOrgs(requestParameters: ListOrgsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const organisation = requestParameters.organisation;\n        const issuer = requestParameters.issuer;\n        const list_children = requestParameters.list_children;\n        const updated_since = requestParameters.updated_since;\n        const suborg_updated = requestParameters.suborg_updated;\n        const enabled = requestParameters.enabled;\n        const billing_account_id = requestParameters.billing_account_id;\n        const shard = requestParameters.shard;\n        const cluster = requestParameters.cluster;\n        const subdomain = requestParameters.subdomain;\n        const page_at_id = requestParameters.page_at_id;\n        const get_system_options = requestParameters.get_system_options;\n        const point_of_presence_name_list = requestParameters.point_of_presence_name_list;\n        const region_name_list = requestParameters.region_name_list;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (organisation !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>organisation, 'organisation');\n        }\n        if (issuer !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>issuer, 'issuer');\n        }\n        if (list_children !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>list_children, 'list_children');\n        }\n        if (updated_since !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>updated_since, 'updated_since');\n        }\n        if (suborg_updated !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>suborg_updated, 'suborg_updated');\n        }\n        if (enabled !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>enabled, 'enabled');\n        }\n        if (billing_account_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>billing_account_id, 'billing_account_id');\n        }\n        if (shard !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>shard, 'shard');\n        }\n        if (cluster !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>cluster, 'cluster');\n        }\n        if (subdomain !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>subdomain, 'subdomain');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (get_system_options !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_system_options, 'get_system_options');\n        }\n        if (point_of_presence_name_list) {\n            point_of_presence_name_list.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'point_of_presence_name_list');\n            })\n        }\n        if (region_name_list) {\n            region_name_list.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'region_name_list');\n            })\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListOrgsResponse>(`${this.configuration.basePath}/v1/orgs`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListOrgsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListOrgsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all sub organisations\n     * Get all sub organisations\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listSubOrgs(requestParameters: ListSubOrgsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListOrgsResponse>;\n    public listSubOrgs(requestParameters: ListSubOrgsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListOrgsResponse>>;\n    public listSubOrgs(requestParameters: ListSubOrgsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListOrgsResponse>>;\n    public listSubOrgs(requestParameters: ListSubOrgsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling listSubOrgs.');\n        }\n        const limit = requestParameters.limit;\n        const updated_since = requestParameters.updated_since;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (updated_since !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>updated_since, 'updated_since');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListOrgsResponse>(`${this.configuration.basePath}/v1/orgs/${encodeURIComponent(String(org_id))}/orgs`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListOrgsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListOrgsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Fixup an org, if required\n     * Fixup an org, if required \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public orgFixup(requestParameters: OrgFixupRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<OrgFixup>;\n    public orgFixup(requestParameters: OrgFixupRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<OrgFixup>>;\n    public orgFixup(requestParameters: OrgFixupRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<OrgFixup>>;\n    public orgFixup(requestParameters: OrgFixupRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling orgFixup.');\n        }\n        const OrgFixup = requestParameters.OrgFixup;\n        if (OrgFixup === null || OrgFixup === undefined) {\n            throw new Error('Required parameter OrgFixup was null or undefined when calling orgFixup.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_OrgFixup>(`${this.configuration.basePath}/v1/orgs/${encodeURIComponent(String(org_id))}/fixup`,\n                    OrgFixup,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _OrgFixup) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new OrgFixupImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Creates an issuer for the sub org\n     * Allocates or removes an issuer for the suborg.  Allocating an issuer allows the suborg to have its own issuer configuration. Note that at most one issuer may be created this way. If an issuer already exists it will be reclaimed and updated. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public reconcileSubOrgIssuer(requestParameters: ReconcileSubOrgIssuerRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Organisation>;\n    public reconcileSubOrgIssuer(requestParameters: ReconcileSubOrgIssuerRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Organisation>>;\n    public reconcileSubOrgIssuer(requestParameters: ReconcileSubOrgIssuerRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Organisation>>;\n    public reconcileSubOrgIssuer(requestParameters: ReconcileSubOrgIssuerRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling reconcileSubOrgIssuer.');\n        }\n        const sub_org_id = requestParameters.sub_org_id;\n        if (sub_org_id === null || sub_org_id === undefined) {\n            throw new Error('Required parameter sub_org_id was null or undefined when calling reconcileSubOrgIssuer.');\n        }\n        const ReconcileSubOrgIssuerRequest = requestParameters.ReconcileSubOrgIssuerRequest;\n        if (ReconcileSubOrgIssuerRequest === null || ReconcileSubOrgIssuerRequest === undefined) {\n            throw new Error('Required parameter ReconcileSubOrgIssuerRequest was null or undefined when calling reconcileSubOrgIssuer.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Organisation>(`${this.configuration.basePath}/v1/orgs/${encodeURIComponent(String(org_id))}/orgs/${encodeURIComponent(String(sub_org_id))}/issuer`,\n                    ReconcileSubOrgIssuerRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Organisation) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new OrganisationImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create or update an organisation\n     * Create or update an organisation\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceOrg(requestParameters: ReplaceOrgRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public replaceOrg(requestParameters: ReplaceOrgRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public replaceOrg(requestParameters: ReplaceOrgRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public replaceOrg(requestParameters: ReplaceOrgRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling replaceOrg.');\n        }\n        const Organisation = requestParameters.Organisation;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<any>(`${this.configuration.basePath}/v1/orgs/${encodeURIComponent(String(org_id))}`,\n                    Organisation,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Update organisation system options\n     * Update organisation system options \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceSystemOptions(requestParameters: ReplaceSystemOptionsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<OrganisationSystemOptions>;\n    public replaceSystemOptions(requestParameters: ReplaceSystemOptionsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<OrganisationSystemOptions>>;\n    public replaceSystemOptions(requestParameters: ReplaceSystemOptionsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<OrganisationSystemOptions>>;\n    public replaceSystemOptions(requestParameters: ReplaceSystemOptionsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling replaceSystemOptions.');\n        }\n        const OrganisationSystemOptions = requestParameters.OrganisationSystemOptions;\n        if (OrganisationSystemOptions === null || OrganisationSystemOptions === undefined) {\n            throw new Error('Required parameter OrganisationSystemOptions was null or undefined when calling replaceSystemOptions.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_OrganisationSystemOptions>(`${this.configuration.basePath}/v1/orgs/${encodeURIComponent(String(org_id))}/system_options`,\n                    OrganisationSystemOptions,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _OrganisationSystemOptions) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new OrganisationSystemOptionsImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Set the inherent capabilities for an org\n     * Sets the inherent capabilities for an organisation. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public setInherentCapabilities(requestParameters: SetInherentCapabilitiesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<OrganisationCapabilities>;\n    public setInherentCapabilities(requestParameters: SetInherentCapabilitiesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<OrganisationCapabilities>>;\n    public setInherentCapabilities(requestParameters: SetInherentCapabilitiesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<OrganisationCapabilities>>;\n    public setInherentCapabilities(requestParameters: SetInherentCapabilitiesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling setInherentCapabilities.');\n        }\n        const OrganisationCapabilities = requestParameters.OrganisationCapabilities;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_OrganisationCapabilities>(`${this.configuration.basePath}/v1/orgs/${encodeURIComponent(String(org_id))}/inherent_capabilities`,\n                    OrganisationCapabilities,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _OrganisationCapabilities) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new OrganisationCapabilitiesImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Validate that the requested org is available\n     * Validate that the requested org is available\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public validateNewOrg(requestParameters: ValidateNewOrgRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public validateNewOrg(requestParameters: ValidateNewOrgRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public validateNewOrg(requestParameters: ValidateNewOrgRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public validateNewOrg(requestParameters: ValidateNewOrgRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const OrganisationAdmin = requestParameters.OrganisationAdmin;\n        if (OrganisationAdmin === null || OrganisationAdmin === undefined) {\n            throw new Error('Required parameter OrganisationAdmin was null or undefined when calling validateNewOrg.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<any>(`${this.configuration.basePath}/v1/orgs/validate_new_org`,\n                    OrganisationAdmin,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _ListElevatedUserRoles, ListElevatedUserRoles, ListElevatedUserRolesImpl } from '../model/models';\nimport { _ListResourcePermissionsResponse, ListResourcePermissionsResponse, ListResourcePermissionsResponseImpl } from '../model/models';\nimport { _ListResourceRolesResponse, ListResourceRolesResponse, ListResourceRolesResponseImpl } from '../model/models';\nimport { _ReplaceUserRoleRequest, ReplaceUserRoleRequest, ReplaceUserRoleRequestImpl } from '../model/models';\nimport { _ResourcePermission, ResourcePermission, ResourcePermissionImpl } from '../model/models';\nimport { _ResourceRole, ResourceRole, ResourceRoleImpl } from '../model/models';\nimport { _ResourceTypeEnum, ResourceTypeEnum, ResourceTypeEnumImpl } from '../model/models';\nimport { _UserRoles, UserRoles, UserRolesImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    PermissionsServiceInterface,\n    BulkDeleteResourcePermissionRequestParams,\n    CreateResourcePermissionRequestParams,\n    CreateResourceRoleRequestParams,\n    DeleteResourcePermissionRequestParams,\n    DeleteResourceRoleRequestParams,\n    GetElevatedUserRolesRequestParams,\n    GetResourcePermissionRequestParams,\n    GetResourceRoleRequestParams,\n    ListElevatedUserRolesRequestParams,\n    ListResourcePermissionsRequestParams,\n    ListResourceRolesRequestParams,\n    ListResourceRolesForTypeRequestParams,\n    ReplaceElevatedUserRoleRequestParams,\n    ReplaceResourcePermissionRequestParams,\n    ReplaceResourceRoleRequestParams\n} from './permissions.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PermissionsService implements PermissionsServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Delete a set of resource permissions matching the resource id\n     * Delete a set of resource permissions matching the resource\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public bulkDeleteResourcePermission(requestParameters: BulkDeleteResourcePermissionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public bulkDeleteResourcePermission(requestParameters: BulkDeleteResourcePermissionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public bulkDeleteResourcePermission(requestParameters: BulkDeleteResourcePermissionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public bulkDeleteResourcePermission(requestParameters: BulkDeleteResourcePermissionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const resource_id = requestParameters.resource_id;\n        const resource_type = requestParameters.resource_type;\n        const user_id = requestParameters.user_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (resource_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_id, 'resource_id');\n        }\n        if (resource_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_type, 'resource_type');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/resource_permissions`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Create a ResourcePermission\n     * Create a ResourcePermission\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createResourcePermission(requestParameters: CreateResourcePermissionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ResourcePermission>;\n    public createResourcePermission(requestParameters: CreateResourcePermissionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ResourcePermission>>;\n    public createResourcePermission(requestParameters: CreateResourcePermissionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ResourcePermission>>;\n    public createResourcePermission(requestParameters: CreateResourcePermissionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const ResourcePermission = requestParameters.ResourcePermission;\n        if (ResourcePermission === null || ResourcePermission === undefined) {\n            throw new Error('Required parameter ResourcePermission was null or undefined when calling createResourcePermission.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_ResourcePermission>(`${this.configuration.basePath}/v1/resource_permissions`,\n                    ResourcePermission,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ResourcePermission) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ResourcePermissionImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a ResourceRole\n     * Create a ResourceRole\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createResourceRole(requestParameters: CreateResourceRoleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ResourceRole>;\n    public createResourceRole(requestParameters: CreateResourceRoleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ResourceRole>>;\n    public createResourceRole(requestParameters: CreateResourceRoleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ResourceRole>>;\n    public createResourceRole(requestParameters: CreateResourceRoleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_type = requestParameters.resource_type;\n        if (resource_type === null || resource_type === undefined) {\n            throw new Error('Required parameter resource_type was null or undefined when calling createResourceRole.');\n        }\n        const ResourceRole = requestParameters.ResourceRole;\n        if (ResourceRole === null || ResourceRole === undefined) {\n            throw new Error('Required parameter ResourceRole was null or undefined when calling createResourceRole.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_ResourceRole>(`${this.configuration.basePath}/v1/resources/${encodeURIComponent(String(resource_type))}/roles`,\n                    ResourceRole,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ResourceRole) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ResourceRoleImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a ResourcePermission\n     * Delete a ResourcePermission\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteResourcePermission(requestParameters: DeleteResourcePermissionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteResourcePermission(requestParameters: DeleteResourcePermissionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteResourcePermission(requestParameters: DeleteResourcePermissionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteResourcePermission(requestParameters: DeleteResourcePermissionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_permission_id = requestParameters.resource_permission_id;\n        if (resource_permission_id === null || resource_permission_id === undefined) {\n            throw new Error('Required parameter resource_permission_id was null or undefined when calling deleteResourcePermission.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/resource_permissions/${encodeURIComponent(String(resource_permission_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a ResourceRole\n     * Delete a ResourceRole\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteResourceRole(requestParameters: DeleteResourceRoleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteResourceRole(requestParameters: DeleteResourceRoleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteResourceRole(requestParameters: DeleteResourceRoleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteResourceRole(requestParameters: DeleteResourceRoleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_type = requestParameters.resource_type;\n        if (resource_type === null || resource_type === undefined) {\n            throw new Error('Required parameter resource_type was null or undefined when calling deleteResourceRole.');\n        }\n        const role_name = requestParameters.role_name;\n        if (role_name === null || role_name === undefined) {\n            throw new Error('Required parameter role_name was null or undefined when calling deleteResourceRole.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/resources/${encodeURIComponent(String(resource_type))}/roles/${encodeURIComponent(String(role_name))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get elevated roles for a user\n     * Get elevated roles for a user\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getElevatedUserRoles(requestParameters: GetElevatedUserRolesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UserRoles>;\n    public getElevatedUserRoles(requestParameters: GetElevatedUserRolesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UserRoles>>;\n    public getElevatedUserRoles(requestParameters: GetElevatedUserRolesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UserRoles>>;\n    public getElevatedUserRoles(requestParameters: GetElevatedUserRolesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling getElevatedUserRoles.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_UserRoles>(`${this.configuration.basePath}/v1/elevated_permissions/${encodeURIComponent(String(user_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UserRoles) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UserRolesImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a ResourcePermission\n     * Get a ResourcePermission\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getResourcePermission(requestParameters: GetResourcePermissionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ResourcePermission>;\n    public getResourcePermission(requestParameters: GetResourcePermissionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ResourcePermission>>;\n    public getResourcePermission(requestParameters: GetResourcePermissionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ResourcePermission>>;\n    public getResourcePermission(requestParameters: GetResourcePermissionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_permission_id = requestParameters.resource_permission_id;\n        if (resource_permission_id === null || resource_permission_id === undefined) {\n            throw new Error('Required parameter resource_permission_id was null or undefined when calling getResourcePermission.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ResourcePermission>(`${this.configuration.basePath}/v1/resource_permissions/${encodeURIComponent(String(resource_permission_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ResourcePermission) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ResourcePermissionImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a ResourceRole\n     * Get a ResourceRole\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getResourceRole(requestParameters: GetResourceRoleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ResourceRole>;\n    public getResourceRole(requestParameters: GetResourceRoleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ResourceRole>>;\n    public getResourceRole(requestParameters: GetResourceRoleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ResourceRole>>;\n    public getResourceRole(requestParameters: GetResourceRoleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_type = requestParameters.resource_type;\n        if (resource_type === null || resource_type === undefined) {\n            throw new Error('Required parameter resource_type was null or undefined when calling getResourceRole.');\n        }\n        const role_name = requestParameters.role_name;\n        if (role_name === null || role_name === undefined) {\n            throw new Error('Required parameter role_name was null or undefined when calling getResourceRole.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ResourceRole>(`${this.configuration.basePath}/v1/resources/${encodeURIComponent(String(resource_type))}/roles/${encodeURIComponent(String(role_name))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ResourceRole) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ResourceRoleImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all elevated users and their roles\n     * List all elevated users and their roles\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listElevatedUserRoles(requestParameters: ListElevatedUserRolesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListElevatedUserRoles>;\n    public listElevatedUserRoles(requestParameters: ListElevatedUserRolesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListElevatedUserRoles>>;\n    public listElevatedUserRoles(requestParameters: ListElevatedUserRolesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListElevatedUserRoles>>;\n    public listElevatedUserRoles(requestParameters: ListElevatedUserRolesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const user_id = requestParameters.user_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListElevatedUserRoles>(`${this.configuration.basePath}/v1/elevated_permissions`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListElevatedUserRoles) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListElevatedUserRolesImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all ResourcePermissions\n     * List all ResourcePermissions\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listResourcePermissions(requestParameters: ListResourcePermissionsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListResourcePermissionsResponse>;\n    public listResourcePermissions(requestParameters: ListResourcePermissionsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListResourcePermissionsResponse>>;\n    public listResourcePermissions(requestParameters: ListResourcePermissionsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListResourcePermissionsResponse>>;\n    public listResourcePermissions(requestParameters: ListResourcePermissionsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const user_id = requestParameters.user_id;\n        const org_id = requestParameters.org_id;\n        const resource_type = requestParameters.resource_type;\n        const resource_role_name = requestParameters.resource_role_name;\n        const resource_id = requestParameters.resource_id;\n        const page_at_id = requestParameters.page_at_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (resource_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_type, 'resource_type');\n        }\n        if (resource_role_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_role_name, 'resource_role_name');\n        }\n        if (resource_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_id, 'resource_id');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListResourcePermissionsResponse>(`${this.configuration.basePath}/v1/resource_permissions`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListResourcePermissionsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListResourcePermissionsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all ResourceRoles\n     * List all ResourceRoles\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listResourceRoles(requestParameters: ListResourceRolesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListResourceRolesResponse>;\n    public listResourceRoles(requestParameters: ListResourceRolesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListResourceRolesResponse>>;\n    public listResourceRoles(requestParameters: ListResourceRolesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListResourceRolesResponse>>;\n    public listResourceRoles(requestParameters: ListResourceRolesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const resource_type = requestParameters.resource_type;\n        const resource_role_name = requestParameters.resource_role_name;\n        const limit = requestParameters.limit;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (resource_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_type, 'resource_type');\n        }\n        if (resource_role_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_role_name, 'resource_role_name');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListResourceRolesResponse>(`${this.configuration.basePath}/v1/resource_roles`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListResourceRolesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListResourceRolesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all ResourceRoles\n     * List all ResourceRoles for a given resource type.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listResourceRolesForType(requestParameters: ListResourceRolesForTypeRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListResourceRolesResponse>;\n    public listResourceRolesForType(requestParameters: ListResourceRolesForTypeRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListResourceRolesResponse>>;\n    public listResourceRolesForType(requestParameters: ListResourceRolesForTypeRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListResourceRolesResponse>>;\n    public listResourceRolesForType(requestParameters: ListResourceRolesForTypeRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_type = requestParameters.resource_type;\n        if (resource_type === null || resource_type === undefined) {\n            throw new Error('Required parameter resource_type was null or undefined when calling listResourceRolesForType.');\n        }\n        const limit = requestParameters.limit;\n        const resource_role_name = requestParameters.resource_role_name;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (resource_role_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_role_name, 'resource_role_name');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListResourceRolesResponse>(`${this.configuration.basePath}/v1/resources/${encodeURIComponent(String(resource_type))}/roles`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListResourceRolesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListResourceRolesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create or update an elevated user role\n     * Create or update an elevated user role\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceElevatedUserRole(requestParameters: ReplaceElevatedUserRoleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public replaceElevatedUserRole(requestParameters: ReplaceElevatedUserRoleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public replaceElevatedUserRole(requestParameters: ReplaceElevatedUserRoleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public replaceElevatedUserRole(requestParameters: ReplaceElevatedUserRoleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling replaceElevatedUserRole.');\n        }\n        const ReplaceUserRoleRequest = requestParameters.ReplaceUserRoleRequest;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<any>(`${this.configuration.basePath}/v1/elevated_permissions/${encodeURIComponent(String(user_id))}`,\n                    ReplaceUserRoleRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Update a ResourcePermission\n     * Update a ResourcePermission\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceResourcePermission(requestParameters: ReplaceResourcePermissionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ResourcePermission>;\n    public replaceResourcePermission(requestParameters: ReplaceResourcePermissionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ResourcePermission>>;\n    public replaceResourcePermission(requestParameters: ReplaceResourcePermissionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ResourcePermission>>;\n    public replaceResourcePermission(requestParameters: ReplaceResourcePermissionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_permission_id = requestParameters.resource_permission_id;\n        if (resource_permission_id === null || resource_permission_id === undefined) {\n            throw new Error('Required parameter resource_permission_id was null or undefined when calling replaceResourcePermission.');\n        }\n        const ResourcePermission = requestParameters.ResourcePermission;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_ResourcePermission>(`${this.configuration.basePath}/v1/resource_permissions/${encodeURIComponent(String(resource_permission_id))}`,\n                    ResourcePermission,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ResourcePermission) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ResourcePermissionImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a ResourceRole\n     * Update a ResourceRole\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceResourceRole(requestParameters: ReplaceResourceRoleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ResourceRole>;\n    public replaceResourceRole(requestParameters: ReplaceResourceRoleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ResourceRole>>;\n    public replaceResourceRole(requestParameters: ReplaceResourceRoleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ResourceRole>>;\n    public replaceResourceRole(requestParameters: ReplaceResourceRoleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_type = requestParameters.resource_type;\n        if (resource_type === null || resource_type === undefined) {\n            throw new Error('Required parameter resource_type was null or undefined when calling replaceResourceRole.');\n        }\n        const role_name = requestParameters.role_name;\n        if (role_name === null || role_name === undefined) {\n            throw new Error('Required parameter role_name was null or undefined when calling replaceResourceRole.');\n        }\n        const ResourceRole = requestParameters.ResourceRole;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_ResourceRole>(`${this.configuration.basePath}/v1/resources/${encodeURIComponent(String(resource_type))}/roles/${encodeURIComponent(String(role_name))}`,\n                    ResourceRole,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ResourceRole) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ResourceRoleImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _MFAChallengeAnswer, MFAChallengeAnswer, MFAChallengeAnswerImpl } from '../model/models';\nimport { _MFAChallengeQuestion, MFAChallengeQuestion, MFAChallengeQuestionImpl } from '../model/models';\nimport { _MFAEnrollmentAnswer, MFAEnrollmentAnswer, MFAEnrollmentAnswerImpl } from '../model/models';\nimport { _MFAEnrollmentQuestion, MFAEnrollmentQuestion, MFAEnrollmentQuestionImpl } from '../model/models';\nimport { _MapAttributesAnswer, MapAttributesAnswer, MapAttributesAnswerImpl } from '../model/models';\nimport { _MapAttributesQuestion, MapAttributesQuestion, MapAttributesQuestionImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    PolicyServiceInterface,\n    GetChallengeDecisionRequestParams,\n    GetEnrollmentDecisionRequestParams,\n    MapAttributesRequestParams\n} from './policy.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PolicyService implements PolicyServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * evaluate a policy challenge decision\n     * Evaluate a policy challenge decision to determine if the user should be forced to answer a challenge\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getChallengeDecision(requestParameters: GetChallengeDecisionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<MFAChallengeAnswer>;\n    public getChallengeDecision(requestParameters: GetChallengeDecisionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<MFAChallengeAnswer>>;\n    public getChallengeDecision(requestParameters: GetChallengeDecisionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<MFAChallengeAnswer>>;\n    public getChallengeDecision(requestParameters: GetChallengeDecisionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const MFAChallengeQuestion = requestParameters.MFAChallengeQuestion;\n        if (MFAChallengeQuestion === null || MFAChallengeQuestion === undefined) {\n            throw new Error('Required parameter MFAChallengeQuestion was null or undefined when calling getChallengeDecision.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n        return of(undefined).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_MFAChallengeAnswer>(`${this.configuration.basePath}/v1/data/authentication/mfa_policy/allow`,\n                    MFAChallengeQuestion,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _MFAChallengeAnswer) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new MFAChallengeAnswerImpl(response)\n            })\n        );\n    }\n\n    /**\n     * evaluate a policy enrollment decision\n     * Evaluate a policy enrollment decision to determine if the user should be forced to enroll\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getEnrollmentDecision(requestParameters: GetEnrollmentDecisionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<MFAEnrollmentAnswer>;\n    public getEnrollmentDecision(requestParameters: GetEnrollmentDecisionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<MFAEnrollmentAnswer>>;\n    public getEnrollmentDecision(requestParameters: GetEnrollmentDecisionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<MFAEnrollmentAnswer>>;\n    public getEnrollmentDecision(requestParameters: GetEnrollmentDecisionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const MFAEnrollmentQuestion = requestParameters.MFAEnrollmentQuestion;\n        if (MFAEnrollmentQuestion === null || MFAEnrollmentQuestion === undefined) {\n            throw new Error('Required parameter MFAEnrollmentQuestion was null or undefined when calling getEnrollmentDecision.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n        return of(undefined).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_MFAEnrollmentAnswer>(`${this.configuration.basePath}/v1/data/authentication/enrollment/allow`,\n                    MFAEnrollmentQuestion,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _MFAEnrollmentAnswer) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new MFAEnrollmentAnswerImpl(response)\n            })\n        );\n    }\n\n    /**\n     * map attributes of a user\n     * map attributes of a user\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public mapAttributes(requestParameters: MapAttributesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<MapAttributesAnswer>;\n    public mapAttributes(requestParameters: MapAttributesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<MapAttributesAnswer>>;\n    public mapAttributes(requestParameters: MapAttributesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<MapAttributesAnswer>>;\n    public mapAttributes(requestParameters: MapAttributesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const MapAttributesQuestion = requestParameters.MapAttributesQuestion;\n        if (MapAttributesQuestion === null || MapAttributesQuestion === undefined) {\n            throw new Error('Required parameter MapAttributesQuestion was null or undefined when calling mapAttributes.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n        return of(undefined).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_MapAttributesAnswer>(`${this.configuration.basePath}/v1/data/authentication/attribute_mapping/map_attributes`,\n                    MapAttributesQuestion,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _MapAttributesAnswer) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new MapAttributesAnswerImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _PolicyConfigAuthzBundle, PolicyConfigAuthzBundle, PolicyConfigAuthzBundleImpl } from '../model/models';\nimport { _PolicyConfigResourceURLBundle, PolicyConfigResourceURLBundle, PolicyConfigResourceURLBundleImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    PolicyConfigServiceInterface,\n    DeleteAuthzBundleRequestParams,\n    GetAuthzBundleRequestParams,\n    GetResourceUrlBundleRequestParams\n} from './policyConfig.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PolicyConfigService implements PolicyConfigServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Delete policy config authz bundle\n     * Delete policy config authz bundle\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteAuthzBundle(requestParameters: DeleteAuthzBundleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteAuthzBundle(requestParameters: DeleteAuthzBundleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteAuthzBundle(requestParameters: DeleteAuthzBundleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteAuthzBundle(requestParameters: DeleteAuthzBundleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling deleteAuthzBundle.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/policy_config/authz_bundle/${encodeURIComponent(String(org_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete policy config resource url bundle\n     * Delete policy config resource url bundle\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteResourceUrlBundle(observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteResourceUrlBundle(observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteResourceUrlBundle(observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteResourceUrlBundle(observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/policy_config/resource_url_bundle`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get PolicyConfigAuthzBundle for an org\n     * Get PolicyConfigAuthzBundle for an org\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getAuthzBundle(requestParameters: GetAuthzBundleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<PolicyConfigAuthzBundle>;\n    public getAuthzBundle(requestParameters: GetAuthzBundleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<PolicyConfigAuthzBundle>>;\n    public getAuthzBundle(requestParameters: GetAuthzBundleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<PolicyConfigAuthzBundle>>;\n    public getAuthzBundle(requestParameters: GetAuthzBundleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling getAuthzBundle.');\n        }\n        const If_None_Match = requestParameters.If_None_Match;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n        if (If_None_Match !== undefined && If_None_Match !== null) {\n            headers = headers.set('If-None-Match', String(If_None_Match));\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_PolicyConfigAuthzBundle>(`${this.configuration.basePath}/v1/policy_config/authz_bundle/${encodeURIComponent(String(org_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _PolicyConfigAuthzBundle) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new PolicyConfigAuthzBundleImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get the global resource url bundle\n     * Get the global resource url bundle\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getResourceUrlBundle(requestParameters: GetResourceUrlBundleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<PolicyConfigResourceURLBundle>;\n    public getResourceUrlBundle(requestParameters: GetResourceUrlBundleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<PolicyConfigResourceURLBundle>>;\n    public getResourceUrlBundle(requestParameters: GetResourceUrlBundleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<PolicyConfigResourceURLBundle>>;\n    public getResourceUrlBundle(requestParameters: GetResourceUrlBundleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const If_None_Match = requestParameters.If_None_Match;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n        if (If_None_Match !== undefined && If_None_Match !== null) {\n            headers = headers.set('If-None-Match', String(If_None_Match));\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_PolicyConfigResourceURLBundle>(`${this.configuration.basePath}/v1/policy_config/resource_url_bundle`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _PolicyConfigResourceURLBundle) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new PolicyConfigResourceURLBundleImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _ListPolicyTemplateInstancesResponse, ListPolicyTemplateInstancesResponse, ListPolicyTemplateInstancesResponseImpl } from '../model/models';\nimport { _PolicyTemplateInstance, PolicyTemplateInstance, PolicyTemplateInstanceImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    PolicyTemplatesServiceInterface,\n    CreatePolicyTemplateInstanceRequestParams,\n    DeletePolicyTemplateInstanceRequestParams,\n    GetPolicyTemplateInstanceRequestParams,\n    ListPolicyTemplateInstancesRequestParams,\n    ReplacePolicyTemplateInstanceRequestParams\n} from './policyTemplates.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class PolicyTemplatesService implements PolicyTemplatesServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Add a PolicyTemplateInstance\n     * Adds a new PolicyTemplateInstance. PolicyTemplates must have unique names within an org for a particular type of template. If the name is not unique, a 409 will be returned. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createPolicyTemplateInstance(requestParameters: CreatePolicyTemplateInstanceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<PolicyTemplateInstance>;\n    public createPolicyTemplateInstance(requestParameters: CreatePolicyTemplateInstanceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<PolicyTemplateInstance>>;\n    public createPolicyTemplateInstance(requestParameters: CreatePolicyTemplateInstanceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<PolicyTemplateInstance>>;\n    public createPolicyTemplateInstance(requestParameters: CreatePolicyTemplateInstanceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const PolicyTemplateInstance = requestParameters.PolicyTemplateInstance;\n        if (PolicyTemplateInstance === null || PolicyTemplateInstance === undefined) {\n            throw new Error('Required parameter PolicyTemplateInstance was null or undefined when calling createPolicyTemplateInstance.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_PolicyTemplateInstance>(`${this.configuration.basePath}/v1/policy_template_instances`,\n                    PolicyTemplateInstance,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _PolicyTemplateInstance) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new PolicyTemplateInstanceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a PolicyTemplateInstance\n     * Delete a PolicyTemplateInstance\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deletePolicyTemplateInstance(requestParameters: DeletePolicyTemplateInstanceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deletePolicyTemplateInstance(requestParameters: DeletePolicyTemplateInstanceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deletePolicyTemplateInstance(requestParameters: DeletePolicyTemplateInstanceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deletePolicyTemplateInstance(requestParameters: DeletePolicyTemplateInstanceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const instance_id = requestParameters.instance_id;\n        if (instance_id === null || instance_id === undefined) {\n            throw new Error('Required parameter instance_id was null or undefined when calling deletePolicyTemplateInstance.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/policy_template_instances/${encodeURIComponent(String(instance_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get a PolicyTemplateInstance\n     * Get a PolicyTemplateInstance\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getPolicyTemplateInstance(requestParameters: GetPolicyTemplateInstanceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<PolicyTemplateInstance>;\n    public getPolicyTemplateInstance(requestParameters: GetPolicyTemplateInstanceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<PolicyTemplateInstance>>;\n    public getPolicyTemplateInstance(requestParameters: GetPolicyTemplateInstanceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<PolicyTemplateInstance>>;\n    public getPolicyTemplateInstance(requestParameters: GetPolicyTemplateInstanceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const instance_id = requestParameters.instance_id;\n        if (instance_id === null || instance_id === undefined) {\n            throw new Error('Required parameter instance_id was null or undefined when calling getPolicyTemplateInstance.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_PolicyTemplateInstance>(`${this.configuration.basePath}/v1/policy_template_instances/${encodeURIComponent(String(instance_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _PolicyTemplateInstance) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new PolicyTemplateInstanceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all standalone policy_templates\n     * List all PolicyTemplateInstances matching the provided query parameters. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listPolicyTemplateInstances(requestParameters: ListPolicyTemplateInstancesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListPolicyTemplateInstancesResponse>;\n    public listPolicyTemplateInstances(requestParameters: ListPolicyTemplateInstancesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListPolicyTemplateInstancesResponse>>;\n    public listPolicyTemplateInstances(requestParameters: ListPolicyTemplateInstancesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListPolicyTemplateInstancesResponse>>;\n    public listPolicyTemplateInstances(requestParameters: ListPolicyTemplateInstancesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const name = requestParameters.name;\n        const include_invalid = requestParameters.include_invalid;\n        const template_type = requestParameters.template_type;\n        const template_types = requestParameters.template_types;\n        const object_id = requestParameters.object_id;\n        const object_type = requestParameters.object_type;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name, 'name');\n        }\n        if (include_invalid !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>include_invalid, 'include_invalid');\n        }\n        if (template_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>template_type, 'template_type');\n        }\n        if (template_types) {\n            template_types.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'template_types');\n            })\n        }\n        if (object_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>object_id, 'object_id');\n        }\n        if (object_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>object_type, 'object_type');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListPolicyTemplateInstancesResponse>(`${this.configuration.basePath}/v1/policy_template_instances`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListPolicyTemplateInstancesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListPolicyTemplateInstancesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * update a PolicyTemplateInstance\n     * update a PolicyTemplateInstance\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replacePolicyTemplateInstance(requestParameters: ReplacePolicyTemplateInstanceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<PolicyTemplateInstance>;\n    public replacePolicyTemplateInstance(requestParameters: ReplacePolicyTemplateInstanceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<PolicyTemplateInstance>>;\n    public replacePolicyTemplateInstance(requestParameters: ReplacePolicyTemplateInstanceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<PolicyTemplateInstance>>;\n    public replacePolicyTemplateInstance(requestParameters: ReplacePolicyTemplateInstanceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const instance_id = requestParameters.instance_id;\n        if (instance_id === null || instance_id === undefined) {\n            throw new Error('Required parameter instance_id was null or undefined when calling replacePolicyTemplateInstance.');\n        }\n        const PolicyTemplateInstance = requestParameters.PolicyTemplateInstance;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_PolicyTemplateInstance>(`${this.configuration.basePath}/v1/policy_template_instances/${encodeURIComponent(String(instance_id))}`,\n                    PolicyTemplateInstance,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _PolicyTemplateInstance) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new PolicyTemplateInstanceImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _Cluster, Cluster, ClusterImpl } from '../model/models';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _ListClusterResponse, ListClusterResponse, ListClusterResponseImpl } from '../model/models';\nimport { _ListPointOfPresencesResponse, ListPointOfPresencesResponse, ListPointOfPresencesResponseImpl } from '../model/models';\nimport { _ListRegionResponse, ListRegionResponse, ListRegionResponseImpl } from '../model/models';\nimport { _ListRegionalLocationsResponse, ListRegionalLocationsResponse, ListRegionalLocationsResponseImpl } from '../model/models';\nimport { _PointOfPresence, PointOfPresence, PointOfPresenceImpl } from '../model/models';\nimport { _Region, Region, RegionImpl } from '../model/models';\nimport { _RoutingRequest, RoutingRequest, RoutingRequestImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    RegionsServiceInterface,\n    AddClusterRequestParams,\n    AddPointOfPresenceRequestParams,\n    AddRegionRequestParams,\n    DeleteClusterRequestParams,\n    DeletePointOfPresenceRequestParams,\n    DeleteRegionRequestParams,\n    GetClusterRequestParams,\n    GetPointOfPresenceRequestParams,\n    GetRegionRequestParams,\n    GetRegionalLocationsRequestParams,\n    ListClustersRequestParams,\n    ListPointOfPresencesRequestParams,\n    ListRegionsRequestParams,\n    ReplaceClusterRequestParams,\n    ReplacePointOfPresenceRequestParams,\n    ReplaceRegionRequestParams,\n    RoutingRequestRequestParams\n} from './regions.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class RegionsService implements RegionsServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Add a Cluster\n     * Adds a new Cluster \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public addCluster(requestParameters: AddClusterRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Cluster>;\n    public addCluster(requestParameters: AddClusterRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Cluster>>;\n    public addCluster(requestParameters: AddClusterRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Cluster>>;\n    public addCluster(requestParameters: AddClusterRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const Cluster = requestParameters.Cluster;\n        if (Cluster === null || Cluster === undefined) {\n            throw new Error('Required parameter Cluster was null or undefined when calling addCluster.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Cluster>(`${this.configuration.basePath}/v1/clusters`,\n                    Cluster,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Cluster) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ClusterImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Add a point of presence.\n     * Adds a new point of presence. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public addPointOfPresence(requestParameters: AddPointOfPresenceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<PointOfPresence>;\n    public addPointOfPresence(requestParameters: AddPointOfPresenceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<PointOfPresence>>;\n    public addPointOfPresence(requestParameters: AddPointOfPresenceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<PointOfPresence>>;\n    public addPointOfPresence(requestParameters: AddPointOfPresenceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const PointOfPresence = requestParameters.PointOfPresence;\n        if (PointOfPresence === null || PointOfPresence === undefined) {\n            throw new Error('Required parameter PointOfPresence was null or undefined when calling addPointOfPresence.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_PointOfPresence>(`${this.configuration.basePath}/v1/point_of_presences`,\n                    PointOfPresence,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _PointOfPresence) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new PointOfPresenceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Add a Region\n     * Adds a new Region \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public addRegion(requestParameters: AddRegionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Region>;\n    public addRegion(requestParameters: AddRegionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Region>>;\n    public addRegion(requestParameters: AddRegionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Region>>;\n    public addRegion(requestParameters: AddRegionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const Region = requestParameters.Region;\n        if (Region === null || Region === undefined) {\n            throw new Error('Required parameter Region was null or undefined when calling addRegion.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Region>(`${this.configuration.basePath}/v1/regions`,\n                    Region,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Region) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RegionImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a Cluster\n     * Delete a Cluster\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteCluster(requestParameters: DeleteClusterRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteCluster(requestParameters: DeleteClusterRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteCluster(requestParameters: DeleteClusterRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteCluster(requestParameters: DeleteClusterRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const cluster_id = requestParameters.cluster_id;\n        if (cluster_id === null || cluster_id === undefined) {\n            throw new Error('Required parameter cluster_id was null or undefined when calling deleteCluster.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/clusters/${encodeURIComponent(String(cluster_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a point of presence\n     * Delete a point of presence\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deletePointOfPresence(requestParameters: DeletePointOfPresenceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deletePointOfPresence(requestParameters: DeletePointOfPresenceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deletePointOfPresence(requestParameters: DeletePointOfPresenceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deletePointOfPresence(requestParameters: DeletePointOfPresenceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const point_of_presence_id = requestParameters.point_of_presence_id;\n        if (point_of_presence_id === null || point_of_presence_id === undefined) {\n            throw new Error('Required parameter point_of_presence_id was null or undefined when calling deletePointOfPresence.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/point_of_presences/${encodeURIComponent(String(point_of_presence_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a Region\n     * Delete a Region\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteRegion(requestParameters: DeleteRegionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteRegion(requestParameters: DeleteRegionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteRegion(requestParameters: DeleteRegionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteRegion(requestParameters: DeleteRegionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const region_id = requestParameters.region_id;\n        if (region_id === null || region_id === undefined) {\n            throw new Error('Required parameter region_id was null or undefined when calling deleteRegion.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/regions/${encodeURIComponent(String(region_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get a Cluster\n     * Get a Cluster\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getCluster(requestParameters: GetClusterRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Cluster>;\n    public getCluster(requestParameters: GetClusterRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Cluster>>;\n    public getCluster(requestParameters: GetClusterRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Cluster>>;\n    public getCluster(requestParameters: GetClusterRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const cluster_id = requestParameters.cluster_id;\n        if (cluster_id === null || cluster_id === undefined) {\n            throw new Error('Required parameter cluster_id was null or undefined when calling getCluster.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Cluster>(`${this.configuration.basePath}/v1/clusters/${encodeURIComponent(String(cluster_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Cluster) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ClusterImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a point of presence\n     * Get a point of presence\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getPointOfPresence(requestParameters: GetPointOfPresenceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<PointOfPresence>;\n    public getPointOfPresence(requestParameters: GetPointOfPresenceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<PointOfPresence>>;\n    public getPointOfPresence(requestParameters: GetPointOfPresenceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<PointOfPresence>>;\n    public getPointOfPresence(requestParameters: GetPointOfPresenceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const point_of_presence_id = requestParameters.point_of_presence_id;\n        if (point_of_presence_id === null || point_of_presence_id === undefined) {\n            throw new Error('Required parameter point_of_presence_id was null or undefined when calling getPointOfPresence.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_PointOfPresence>(`${this.configuration.basePath}/v1/point_of_presences/${encodeURIComponent(String(point_of_presence_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _PointOfPresence) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new PointOfPresenceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a Region\n     * Get a Region\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getRegion(requestParameters: GetRegionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Region>;\n    public getRegion(requestParameters: GetRegionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Region>>;\n    public getRegion(requestParameters: GetRegionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Region>>;\n    public getRegion(requestParameters: GetRegionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const region_id = requestParameters.region_id;\n        if (region_id === null || region_id === undefined) {\n            throw new Error('Required parameter region_id was null or undefined when calling getRegion.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Region>(`${this.configuration.basePath}/v1/regions/${encodeURIComponent(String(region_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Region) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RegionImpl(response)\n            })\n        );\n    }\n\n    /**\n     * get regional location(s)\n     * get regional location(s) \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getRegionalLocations(requestParameters: GetRegionalLocationsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListRegionalLocationsResponse>;\n    public getRegionalLocations(requestParameters: GetRegionalLocationsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListRegionalLocationsResponse>>;\n    public getRegionalLocations(requestParameters: GetRegionalLocationsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListRegionalLocationsResponse>>;\n    public getRegionalLocations(requestParameters: GetRegionalLocationsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const page_at_name = requestParameters.page_at_name;\n        const org_id = requestParameters.org_id;\n        const region_name_list = requestParameters.region_name_list;\n        const point_of_presence_name_list = requestParameters.point_of_presence_name_list;\n        const location_name_list = requestParameters.location_name_list;\n        const subdomain = requestParameters.subdomain;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (page_at_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_name, 'page_at_name');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (region_name_list) {\n            region_name_list.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'region_name_list');\n            })\n        }\n        if (point_of_presence_name_list) {\n            point_of_presence_name_list.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'point_of_presence_name_list');\n            })\n        }\n        if (location_name_list) {\n            location_name_list.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'location_name_list');\n            })\n        }\n        if (subdomain !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>subdomain, 'subdomain');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n        return of(undefined).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListRegionalLocationsResponse>(`${this.configuration.basePath}/v1/regional_locations`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListRegionalLocationsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListRegionalLocationsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all Clusters\n     * List all Clusters matching the provided query parameters. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listClusters(requestParameters: ListClustersRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListClusterResponse>;\n    public listClusters(requestParameters: ListClustersRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListClusterResponse>>;\n    public listClusters(requestParameters: ListClustersRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListClusterResponse>>;\n    public listClusters(requestParameters: ListClustersRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const page_at_name = requestParameters.page_at_name;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (page_at_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_name, 'page_at_name');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListClusterResponse>(`${this.configuration.basePath}/v1/clusters`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListClusterResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListClusterResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all regions\n     * List all regions matching the provided query parameters. Perform keyset pagination by setting the page_at_name parameter to the name for the next page to fetch. Set it to &#x60;\\&quot;\\&quot;&#x60; to start from the beginning. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listPointOfPresences(requestParameters: ListPointOfPresencesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListPointOfPresencesResponse>;\n    public listPointOfPresences(requestParameters: ListPointOfPresencesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListPointOfPresencesResponse>>;\n    public listPointOfPresences(requestParameters: ListPointOfPresencesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListPointOfPresencesResponse>>;\n    public listPointOfPresences(requestParameters: ListPointOfPresencesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const name = requestParameters.name;\n        const page_at_name = requestParameters.page_at_name;\n        const includes_all_tag = requestParameters.includes_all_tag;\n        const includes_any_tag = requestParameters.includes_any_tag;\n        const excludes_all_tag = requestParameters.excludes_all_tag;\n        const excludes_any_tag = requestParameters.excludes_any_tag;\n        const cluster_name = requestParameters.cluster_name;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name, 'name');\n        }\n        if (page_at_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_name, 'page_at_name');\n        }\n        if (includes_all_tag) {\n            includes_all_tag.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'includes_all_tag');\n            })\n        }\n        if (includes_any_tag) {\n            includes_any_tag.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'includes_any_tag');\n            })\n        }\n        if (excludes_all_tag) {\n            excludes_all_tag.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'excludes_all_tag');\n            })\n        }\n        if (excludes_any_tag) {\n            excludes_any_tag.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'excludes_any_tag');\n            })\n        }\n        if (cluster_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>cluster_name, 'cluster_name');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListPointOfPresencesResponse>(`${this.configuration.basePath}/v1/point_of_presences`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListPointOfPresencesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListPointOfPresencesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all regions\n     * List all Regions matching the provided query parameters. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listRegions(requestParameters: ListRegionsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListRegionResponse>;\n    public listRegions(requestParameters: ListRegionsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListRegionResponse>>;\n    public listRegions(requestParameters: ListRegionsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListRegionResponse>>;\n    public listRegions(requestParameters: ListRegionsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const page_at_name = requestParameters.page_at_name;\n        const org_id = requestParameters.org_id;\n        const cluster_name = requestParameters.cluster_name;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (page_at_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_name, 'page_at_name');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (cluster_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>cluster_name, 'cluster_name');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListRegionResponse>(`${this.configuration.basePath}/v1/regions`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListRegionResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListRegionResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * update a Cluster\n     * update a Cluster\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceCluster(requestParameters: ReplaceClusterRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Cluster>;\n    public replaceCluster(requestParameters: ReplaceClusterRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Cluster>>;\n    public replaceCluster(requestParameters: ReplaceClusterRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Cluster>>;\n    public replaceCluster(requestParameters: ReplaceClusterRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const cluster_id = requestParameters.cluster_id;\n        if (cluster_id === null || cluster_id === undefined) {\n            throw new Error('Required parameter cluster_id was null or undefined when calling replaceCluster.');\n        }\n        const Cluster = requestParameters.Cluster;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_Cluster>(`${this.configuration.basePath}/v1/clusters/${encodeURIComponent(String(cluster_id))}`,\n                    Cluster,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Cluster) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ClusterImpl(response)\n            })\n        );\n    }\n\n    /**\n     * update a point of presence\n     * update a point of presence\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replacePointOfPresence(requestParameters: ReplacePointOfPresenceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<PointOfPresence>;\n    public replacePointOfPresence(requestParameters: ReplacePointOfPresenceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<PointOfPresence>>;\n    public replacePointOfPresence(requestParameters: ReplacePointOfPresenceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<PointOfPresence>>;\n    public replacePointOfPresence(requestParameters: ReplacePointOfPresenceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const point_of_presence_id = requestParameters.point_of_presence_id;\n        if (point_of_presence_id === null || point_of_presence_id === undefined) {\n            throw new Error('Required parameter point_of_presence_id was null or undefined when calling replacePointOfPresence.');\n        }\n        const PointOfPresence = requestParameters.PointOfPresence;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_PointOfPresence>(`${this.configuration.basePath}/v1/point_of_presences/${encodeURIComponent(String(point_of_presence_id))}`,\n                    PointOfPresence,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _PointOfPresence) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new PointOfPresenceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * update a Region\n     * update a Region\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceRegion(requestParameters: ReplaceRegionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Region>;\n    public replaceRegion(requestParameters: ReplaceRegionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Region>>;\n    public replaceRegion(requestParameters: ReplaceRegionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Region>>;\n    public replaceRegion(requestParameters: ReplaceRegionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const region_id = requestParameters.region_id;\n        if (region_id === null || region_id === undefined) {\n            throw new Error('Required parameter region_id was null or undefined when calling replaceRegion.');\n        }\n        const Region = requestParameters.Region;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_Region>(`${this.configuration.basePath}/v1/regions/${encodeURIComponent(String(region_id))}`,\n                    Region,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Region) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RegionImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Request routing\n     * Request routing for a particular list of ip_addresses \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public routingRequest(requestParameters: RoutingRequestRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<RoutingRequest>;\n    public routingRequest(requestParameters: RoutingRequestRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<RoutingRequest>>;\n    public routingRequest(requestParameters: RoutingRequestRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<RoutingRequest>>;\n    public routingRequest(requestParameters: RoutingRequestRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const RoutingRequest = requestParameters.RoutingRequest;\n        if (RoutingRequest === null || RoutingRequest === undefined) {\n            throw new Error('Required parameter RoutingRequest was null or undefined when calling routingRequest.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_RoutingRequest>(`${this.configuration.basePath}/v1/routing_request`,\n                    RoutingRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _RoutingRequest) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RoutingRequestImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _ListCombinedResourceRulesResponse, ListCombinedResourceRulesResponse, ListCombinedResourceRulesResponseImpl } from '../model/models';\nimport { _ListGuidMetadataResponse, ListGuidMetadataResponse, ListGuidMetadataResponseImpl } from '../model/models';\nimport { _ListResourceGroupsResponse, ListResourceGroupsResponse, ListResourceGroupsResponseImpl } from '../model/models';\nimport { _ListResourcesResponse, ListResourcesResponse, ListResourcesResponseImpl } from '../model/models';\nimport { _Resource, Resource, ResourceImpl } from '../model/models';\nimport { _ResourceTypeEnum, ResourceTypeEnum, ResourceTypeEnumImpl } from '../model/models';\nimport { _RuleScopeEnum, RuleScopeEnum, RuleScopeEnumImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    ResourcesServiceInterface,\n    AddResourceRequestParams,\n    DeleteResourceRequestParams,\n    GetResourceRequestParams,\n    ListCombinedResourceRulesRequestParams,\n    ListResourceGroupsRequestParams,\n    ListResourceGuidMappingRequestParams,\n    ListResourcesRequestParams,\n    ReconcileDefaultPolicyRequestParams,\n    ReplaceResourceRequestParams\n} from './resources.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class ResourcesService implements ResourcesServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Add a resource\n     * Add a new resource of a specific type. This API is used specifically for resource_type&#x3D;group, where there is no derived type resource for this object. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public addResource(requestParameters: AddResourceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Resource>;\n    public addResource(requestParameters: AddResourceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Resource>>;\n    public addResource(requestParameters: AddResourceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Resource>>;\n    public addResource(requestParameters: AddResourceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const Resource = requestParameters.Resource;\n        if (Resource === null || Resource === undefined) {\n            throw new Error('Required parameter Resource was null or undefined when calling addResource.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Resource>(`${this.configuration.basePath}/v1/resources`,\n                    Resource,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Resource) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ResourceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a resource\n     * Delete a resource\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteResource(requestParameters: DeleteResourceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteResource(requestParameters: DeleteResourceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteResource(requestParameters: DeleteResourceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteResource(requestParameters: DeleteResourceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const resource_id = requestParameters.resource_id;\n        if (resource_id === null || resource_id === undefined) {\n            throw new Error('Required parameter resource_id was null or undefined when calling deleteResource.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/resources/${encodeURIComponent(String(resource_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get a resource\n     * Get a resource\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getResource(requestParameters: GetResourceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Resource>;\n    public getResource(requestParameters: GetResourceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Resource>>;\n    public getResource(requestParameters: GetResourceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Resource>>;\n    public getResource(requestParameters: GetResourceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_id = requestParameters.resource_id;\n        if (resource_id === null || resource_id === undefined) {\n            throw new Error('Required parameter resource_id was null or undefined when calling getResource.');\n        }\n        const org_id = requestParameters.org_id;\n        const expand_resource_members = requestParameters.expand_resource_members;\n        const include_legacy_icon_info = requestParameters.include_legacy_icon_info;\n        const resource_urls = requestParameters.resource_urls;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (expand_resource_members !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>expand_resource_members, 'expand_resource_members');\n        }\n        if (include_legacy_icon_info !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>include_legacy_icon_info, 'include_legacy_icon_info');\n        }\n        if (resource_urls !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_urls, 'resource_urls');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Resource>(`${this.configuration.basePath}/v1/resources/${encodeURIComponent(String(resource_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Resource) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ResourceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List rules combined by scope or role\n     * Retrieve all role_to_rule_entries for resources. If assigned is true, this will list all role_to_rule_entries for applications assigned to the given org_id \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listCombinedResourceRules(requestParameters: ListCombinedResourceRulesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListCombinedResourceRulesResponse>;\n    public listCombinedResourceRules(requestParameters: ListCombinedResourceRulesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListCombinedResourceRulesResponse>>;\n    public listCombinedResourceRules(requestParameters: ListCombinedResourceRulesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListCombinedResourceRulesResponse>>;\n    public listCombinedResourceRules(requestParameters: ListCombinedResourceRulesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const scopes = requestParameters.scopes;\n        const resource_id = requestParameters.resource_id;\n        const limit = requestParameters.limit;\n        const assigned = requestParameters.assigned;\n        const resource_type = requestParameters.resource_type;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (scopes) {\n            scopes.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'scopes');\n            })\n        }\n        if (resource_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_id, 'resource_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (assigned !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>assigned, 'assigned');\n        }\n        if (resource_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_type, 'resource_type');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListCombinedResourceRulesResponse>(`${this.configuration.basePath}/v1/combined_resource_rules`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListCombinedResourceRulesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListCombinedResourceRulesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List resource groups and their children.\n     * List all resource groups and their children. This is an optimized query that minimizes the returned result to guids only. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listResourceGroups(requestParameters: ListResourceGroupsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListResourceGroupsResponse>;\n    public listResourceGroups(requestParameters: ListResourceGroupsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListResourceGroupsResponse>>;\n    public listResourceGroups(requestParameters: ListResourceGroupsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListResourceGroupsResponse>>;\n    public listResourceGroups(requestParameters: ListResourceGroupsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_ids = requestParameters.org_ids;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_ids) {\n            org_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'org_ids');\n            })\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListResourceGroupsResponse>(`${this.configuration.basePath}/v1/resources/groups`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListResourceGroupsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListResourceGroupsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all resource guids and a unique name mapping\n     * Get all resource guids and a unique name mapping\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listResourceGuidMapping(requestParameters: ListResourceGuidMappingRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListGuidMetadataResponse>;\n    public listResourceGuidMapping(requestParameters: ListResourceGuidMappingRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListGuidMetadataResponse>>;\n    public listResourceGuidMapping(requestParameters: ListResourceGuidMappingRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListGuidMetadataResponse>>;\n    public listResourceGuidMapping(requestParameters: ListResourceGuidMappingRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const resource_id = requestParameters.resource_id;\n        const limit = requestParameters.limit;\n        const previous_guid = requestParameters.previous_guid;\n        const updated_since = requestParameters.updated_since;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (resource_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_id, 'resource_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (previous_guid !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>previous_guid, 'previous_guid');\n        }\n        if (updated_since !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>updated_since, 'updated_since');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListGuidMetadataResponse>(`${this.configuration.basePath}/v1/resources/guids`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListGuidMetadataResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListGuidMetadataResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all Resources\n     * List all Resources matching the provided query parameters. Perform keyset pagination by setting the page_at_id parameter to the id for the next page to fetch. Set it to &#x60;\\&quot;\\&quot;&#x60; to start from the beginning. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listResources(requestParameters: ListResourcesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListResourcesResponse>;\n    public listResources(requestParameters: ListResourcesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListResourcesResponse>>;\n    public listResources(requestParameters: ListResourcesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListResourcesResponse>>;\n    public listResources(requestParameters: ListResourcesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const resource_type = requestParameters.resource_type;\n        const exclude_resource_type = requestParameters.exclude_resource_type;\n        const name_slug = requestParameters.name_slug;\n        const name = requestParameters.name;\n        const resource_id = requestParameters.resource_id;\n        const page_at_id = requestParameters.page_at_id;\n        const org_ids = requestParameters.org_ids;\n        const expand_resource_members = requestParameters.expand_resource_members;\n        const include_legacy_icon_info = requestParameters.include_legacy_icon_info;\n        const resource_urls = requestParameters.resource_urls;\n        const show_stats = requestParameters.show_stats;\n        const page_on = requestParameters.page_on;\n        const page_at_key = requestParameters.page_at_key;\n        const page_sort = requestParameters.page_sort;\n        const search_direction = requestParameters.search_direction;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (resource_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_type, 'resource_type');\n        }\n        if (exclude_resource_type) {\n            exclude_resource_type.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'exclude_resource_type');\n            })\n        }\n        if (name_slug !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name_slug, 'name_slug');\n        }\n        if (name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name, 'name');\n        }\n        if (resource_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_id, 'resource_id');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (org_ids) {\n            org_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'org_ids');\n            })\n        }\n        if (expand_resource_members !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>expand_resource_members, 'expand_resource_members');\n        }\n        if (include_legacy_icon_info !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>include_legacy_icon_info, 'include_legacy_icon_info');\n        }\n        if (resource_urls !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_urls, 'resource_urls');\n        }\n        if (show_stats !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>show_stats, 'show_stats');\n        }\n        if (page_on) {\n            page_on.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_on');\n            })\n        }\n        if (page_at_key) {\n            page_at_key.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_at_key');\n            })\n        }\n        if (page_sort) {\n            page_sort.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'page_sort');\n            })\n        }\n        if (search_direction !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>search_direction, 'search_direction');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListResourcesResponse>(`${this.configuration.basePath}/v1/resources`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListResourcesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListResourcesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Reconciles the default policy for a resource\n     * Reconciles the default policy for a resource\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public reconcileDefaultPolicy(requestParameters: ReconcileDefaultPolicyRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Resource>;\n    public reconcileDefaultPolicy(requestParameters: ReconcileDefaultPolicyRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Resource>>;\n    public reconcileDefaultPolicy(requestParameters: ReconcileDefaultPolicyRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Resource>>;\n    public reconcileDefaultPolicy(requestParameters: ReconcileDefaultPolicyRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_id = requestParameters.resource_id;\n        if (resource_id === null || resource_id === undefined) {\n            throw new Error('Required parameter resource_id was null or undefined when calling reconcileDefaultPolicy.');\n        }\n        const Resource = requestParameters.Resource;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Resource>(`${this.configuration.basePath}/v1/resources/${encodeURIComponent(String(resource_id))}/reconcile_default_policy`,\n                    Resource,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Resource) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ResourceImpl(response)\n            })\n        );\n    }\n\n    /**\n     * update a resource\n     * update a resource\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceResource(requestParameters: ReplaceResourceRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Resource>;\n    public replaceResource(requestParameters: ReplaceResourceRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Resource>>;\n    public replaceResource(requestParameters: ReplaceResourceRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Resource>>;\n    public replaceResource(requestParameters: ReplaceResourceRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const resource_id = requestParameters.resource_id;\n        if (resource_id === null || resource_id === undefined) {\n            throw new Error('Required parameter resource_id was null or undefined when calling replaceResource.');\n        }\n        const Resource = requestParameters.Resource;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_Resource>(`${this.configuration.basePath}/v1/resources/${encodeURIComponent(String(resource_id))}`,\n                    Resource,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Resource) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ResourceImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _ListStandaloneRulePoliciesResponse, ListStandaloneRulePoliciesResponse, ListStandaloneRulePoliciesResponseImpl } from '../model/models';\nimport { _ListStandaloneRuleTreesResponse, ListStandaloneRuleTreesResponse, ListStandaloneRuleTreesResponseImpl } from '../model/models';\nimport { _ListStandaloneRulesResponse, ListStandaloneRulesResponse, ListStandaloneRulesResponseImpl } from '../model/models';\nimport { _ListStandaloneRulesetBundlesResponse, ListStandaloneRulesetBundlesResponse, ListStandaloneRulesetBundlesResponseImpl } from '../model/models';\nimport { _ListStandaloneRulesetLabelsResponse, ListStandaloneRulesetLabelsResponse, ListStandaloneRulesetLabelsResponseImpl } from '../model/models';\nimport { _ListStandaloneRulesetsResponse, ListStandaloneRulesetsResponse, ListStandaloneRulesetsResponseImpl } from '../model/models';\nimport { _StandaloneRule, StandaloneRule, StandaloneRuleImpl } from '../model/models';\nimport { _StandaloneRulePolicy, StandaloneRulePolicy, StandaloneRulePolicyImpl } from '../model/models';\nimport { _StandaloneRuleTree, StandaloneRuleTree, StandaloneRuleTreeImpl } from '../model/models';\nimport { _StandaloneRulesCleanup, StandaloneRulesCleanup, StandaloneRulesCleanupImpl } from '../model/models';\nimport { _StandaloneRuleset, StandaloneRuleset, StandaloneRulesetImpl } from '../model/models';\nimport { _StandaloneRulesetBundle, StandaloneRulesetBundle, StandaloneRulesetBundleImpl } from '../model/models';\nimport { _StandaloneRulesetLabel, StandaloneRulesetLabel, StandaloneRulesetLabelImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    RulesServiceInterface,\n    CleanupStandaloneRulesRequestParams,\n    CreateRulesetLabelRequestParams,\n    CreateStandaloneRuleRequestParams,\n    CreateStandaloneRulePolicyRequestParams,\n    CreateStandaloneRuleTreeRequestParams,\n    CreateStandaloneRulesetRequestParams,\n    CreateStandaloneRulesetBundleRequestParams,\n    DeleteRulesetLabelRequestParams,\n    DeleteStandaloneRuleRequestParams,\n    DeleteStandaloneRulePolicyRequestParams,\n    DeleteStandaloneRuleTreeRequestParams,\n    DeleteStandaloneRulesetRequestParams,\n    DeleteStandaloneRulesetBundleRequestParams,\n    GetRulesetLabelRequestParams,\n    GetStandaloneRuleRequestParams,\n    GetStandaloneRulePolicyRequestParams,\n    GetStandaloneRuleTreeRequestParams,\n    GetStandaloneRulesetRequestParams,\n    GetStandaloneRulesetBundleRequestParams,\n    ListRulesetLabelsRequestParams,\n    ListStandaloneRulePoliciesRequestParams,\n    ListStandaloneRuleTreesRequestParams,\n    ListStandaloneRulesRequestParams,\n    ListStandaloneRulesetBundlesRequestParams,\n    ListStandaloneRulesetsRequestParams,\n    ReplaceStandaloneRuleRequestParams,\n    ReplaceStandaloneRulePolicyRequestParams,\n    ReplaceStandaloneRuleTreeRequestParams,\n    ReplaceStandaloneRulesetRequestParams,\n    ReplaceStandaloneRulesetBundleRequestParams\n} from './rules.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class RulesService implements RulesServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * cleanup of standalone rules\n     * deletion of all standalone rules/sets/labels/bundles that are associated with object_type,object_id and label \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public cleanupStandaloneRules(requestParameters: CleanupStandaloneRulesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<StandaloneRulesCleanup>;\n    public cleanupStandaloneRules(requestParameters: CleanupStandaloneRulesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<StandaloneRulesCleanup>>;\n    public cleanupStandaloneRules(requestParameters: CleanupStandaloneRulesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<StandaloneRulesCleanup>>;\n    public cleanupStandaloneRules(requestParameters: CleanupStandaloneRulesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const StandaloneRulesCleanup = requestParameters.StandaloneRulesCleanup;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_StandaloneRulesCleanup>(`${this.configuration.basePath}/v1/standalone_rules/cleanup`,\n                    StandaloneRulesCleanup,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _StandaloneRulesCleanup) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new StandaloneRulesCleanupImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Creates a StandaloneRulesetLabel\n     * Creates a StandaloneRulesetLabel \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createRulesetLabel(requestParameters: CreateRulesetLabelRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<StandaloneRulesetLabel>;\n    public createRulesetLabel(requestParameters: CreateRulesetLabelRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<StandaloneRulesetLabel>>;\n    public createRulesetLabel(requestParameters: CreateRulesetLabelRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<StandaloneRulesetLabel>>;\n    public createRulesetLabel(requestParameters: CreateRulesetLabelRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const StandaloneRulesetLabel = requestParameters.StandaloneRulesetLabel;\n        if (StandaloneRulesetLabel === null || StandaloneRulesetLabel === undefined) {\n            throw new Error('Required parameter StandaloneRulesetLabel was null or undefined when calling createRulesetLabel.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_StandaloneRulesetLabel>(`${this.configuration.basePath}/v1/standalone_ruleset_labels`,\n                    StandaloneRulesetLabel,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _StandaloneRulesetLabel) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new StandaloneRulesetLabelImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Add a standalone rule\n     * Adds a new standalone rule. Rules must have unique names within an org. If the name is not unique, a 409 will be returned. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createStandaloneRule(requestParameters: CreateStandaloneRuleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<StandaloneRule>;\n    public createStandaloneRule(requestParameters: CreateStandaloneRuleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<StandaloneRule>>;\n    public createStandaloneRule(requestParameters: CreateStandaloneRuleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<StandaloneRule>>;\n    public createStandaloneRule(requestParameters: CreateStandaloneRuleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const StandaloneRule = requestParameters.StandaloneRule;\n        if (StandaloneRule === null || StandaloneRule === undefined) {\n            throw new Error('Required parameter StandaloneRule was null or undefined when calling createStandaloneRule.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_StandaloneRule>(`${this.configuration.basePath}/v1/standalone_rules`,\n                    StandaloneRule,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _StandaloneRule) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new StandaloneRuleImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Add a standalone rule policy\n     * Adds a new standalone rule policy. Policies must have a unique (object_type, object_id, policy_class, policy_name) is not unique, a 409 will be returned. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createStandaloneRulePolicy(requestParameters: CreateStandaloneRulePolicyRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<StandaloneRulePolicy>;\n    public createStandaloneRulePolicy(requestParameters: CreateStandaloneRulePolicyRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<StandaloneRulePolicy>>;\n    public createStandaloneRulePolicy(requestParameters: CreateStandaloneRulePolicyRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<StandaloneRulePolicy>>;\n    public createStandaloneRulePolicy(requestParameters: CreateStandaloneRulePolicyRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const StandaloneRulePolicy = requestParameters.StandaloneRulePolicy;\n        if (StandaloneRulePolicy === null || StandaloneRulePolicy === undefined) {\n            throw new Error('Required parameter StandaloneRulePolicy was null or undefined when calling createStandaloneRulePolicy.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_StandaloneRulePolicy>(`${this.configuration.basePath}/v1/standalone_rule_policies`,\n                    StandaloneRulePolicy,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _StandaloneRulePolicy) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new StandaloneRulePolicyImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Add a standalone rule tree\n     * Adds a new standalone rule tree. Rule trees must have unique names within an org. If the name is not unique, a 409 will be returned. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createStandaloneRuleTree(requestParameters: CreateStandaloneRuleTreeRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<StandaloneRuleTree>;\n    public createStandaloneRuleTree(requestParameters: CreateStandaloneRuleTreeRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<StandaloneRuleTree>>;\n    public createStandaloneRuleTree(requestParameters: CreateStandaloneRuleTreeRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<StandaloneRuleTree>>;\n    public createStandaloneRuleTree(requestParameters: CreateStandaloneRuleTreeRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const StandaloneRuleTree = requestParameters.StandaloneRuleTree;\n        if (StandaloneRuleTree === null || StandaloneRuleTree === undefined) {\n            throw new Error('Required parameter StandaloneRuleTree was null or undefined when calling createStandaloneRuleTree.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_StandaloneRuleTree>(`${this.configuration.basePath}/v1/standalone_rule_trees`,\n                    StandaloneRuleTree,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _StandaloneRuleTree) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new StandaloneRuleTreeImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Add a standalone ruleset\n     * Adds a new standalone ruleset. rulesets must have unique names within an org. If the name is not unique, a 409 will be returned. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createStandaloneRuleset(requestParameters: CreateStandaloneRulesetRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<StandaloneRuleset>;\n    public createStandaloneRuleset(requestParameters: CreateStandaloneRulesetRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<StandaloneRuleset>>;\n    public createStandaloneRuleset(requestParameters: CreateStandaloneRulesetRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<StandaloneRuleset>>;\n    public createStandaloneRuleset(requestParameters: CreateStandaloneRulesetRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const StandaloneRuleset = requestParameters.StandaloneRuleset;\n        if (StandaloneRuleset === null || StandaloneRuleset === undefined) {\n            throw new Error('Required parameter StandaloneRuleset was null or undefined when calling createStandaloneRuleset.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_StandaloneRuleset>(`${this.configuration.basePath}/v1/standalone_rulesets`,\n                    StandaloneRuleset,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _StandaloneRuleset) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new StandaloneRulesetImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Add a standalone ruleset bundle\n     * Adds a new standalone ruleset bundle. rulesets must have unique names within an org. If the name is not unique, a 409 will be returned. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createStandaloneRulesetBundle(requestParameters: CreateStandaloneRulesetBundleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<StandaloneRulesetBundle>;\n    public createStandaloneRulesetBundle(requestParameters: CreateStandaloneRulesetBundleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<StandaloneRulesetBundle>>;\n    public createStandaloneRulesetBundle(requestParameters: CreateStandaloneRulesetBundleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<StandaloneRulesetBundle>>;\n    public createStandaloneRulesetBundle(requestParameters: CreateStandaloneRulesetBundleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const StandaloneRulesetBundle = requestParameters.StandaloneRulesetBundle;\n        if (StandaloneRulesetBundle === null || StandaloneRulesetBundle === undefined) {\n            throw new Error('Required parameter StandaloneRulesetBundle was null or undefined when calling createStandaloneRulesetBundle.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_StandaloneRulesetBundle>(`${this.configuration.basePath}/v1/standalone_ruleset_bundles`,\n                    StandaloneRulesetBundle,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _StandaloneRulesetBundle) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new StandaloneRulesetBundleImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a StandaloneRulesetLabel\n     * Delete a StandaloneRulesetLabel\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteRulesetLabel(requestParameters: DeleteRulesetLabelRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteRulesetLabel(requestParameters: DeleteRulesetLabelRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteRulesetLabel(requestParameters: DeleteRulesetLabelRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteRulesetLabel(requestParameters: DeleteRulesetLabelRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const label = requestParameters.label;\n        if (label === null || label === undefined) {\n            throw new Error('Required parameter label was null or undefined when calling deleteRulesetLabel.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/standalone_ruleset_labels/${encodeURIComponent(String(label))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a standalone rule\n     * Delete a standalone rule\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteStandaloneRule(requestParameters: DeleteStandaloneRuleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteStandaloneRule(requestParameters: DeleteStandaloneRuleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteStandaloneRule(requestParameters: DeleteStandaloneRuleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteStandaloneRule(requestParameters: DeleteStandaloneRuleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const rule_id = requestParameters.rule_id;\n        if (rule_id === null || rule_id === undefined) {\n            throw new Error('Required parameter rule_id was null or undefined when calling deleteStandaloneRule.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/standalone_rules/${encodeURIComponent(String(rule_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a standalone rule policy\n     * Delete a standalone rule policy\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteStandaloneRulePolicy(requestParameters: DeleteStandaloneRulePolicyRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteStandaloneRulePolicy(requestParameters: DeleteStandaloneRulePolicyRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteStandaloneRulePolicy(requestParameters: DeleteStandaloneRulePolicyRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteStandaloneRulePolicy(requestParameters: DeleteStandaloneRulePolicyRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const standalone_rule_policy_id = requestParameters.standalone_rule_policy_id;\n        if (standalone_rule_policy_id === null || standalone_rule_policy_id === undefined) {\n            throw new Error('Required parameter standalone_rule_policy_id was null or undefined when calling deleteStandaloneRulePolicy.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/standalone_rule_policies/${encodeURIComponent(String(standalone_rule_policy_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a standalone rule tree\n     * Delete a standalone rule tree\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteStandaloneRuleTree(requestParameters: DeleteStandaloneRuleTreeRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteStandaloneRuleTree(requestParameters: DeleteStandaloneRuleTreeRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteStandaloneRuleTree(requestParameters: DeleteStandaloneRuleTreeRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteStandaloneRuleTree(requestParameters: DeleteStandaloneRuleTreeRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const standalone_rule_tree_id = requestParameters.standalone_rule_tree_id;\n        if (standalone_rule_tree_id === null || standalone_rule_tree_id === undefined) {\n            throw new Error('Required parameter standalone_rule_tree_id was null or undefined when calling deleteStandaloneRuleTree.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/standalone_rule_trees/${encodeURIComponent(String(standalone_rule_tree_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a standalone ruleset\n     * Delete a standalone ruleset\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteStandaloneRuleset(requestParameters: DeleteStandaloneRulesetRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteStandaloneRuleset(requestParameters: DeleteStandaloneRulesetRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteStandaloneRuleset(requestParameters: DeleteStandaloneRulesetRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteStandaloneRuleset(requestParameters: DeleteStandaloneRulesetRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const standalone_ruleset_id = requestParameters.standalone_ruleset_id;\n        if (standalone_ruleset_id === null || standalone_ruleset_id === undefined) {\n            throw new Error('Required parameter standalone_ruleset_id was null or undefined when calling deleteStandaloneRuleset.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/standalone_rulesets/${encodeURIComponent(String(standalone_ruleset_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a standalone ruleset_bundle\n     * Delete a standalone ruleset_bundle\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteStandaloneRulesetBundle(requestParameters: DeleteStandaloneRulesetBundleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public deleteStandaloneRulesetBundle(requestParameters: DeleteStandaloneRulesetBundleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public deleteStandaloneRulesetBundle(requestParameters: DeleteStandaloneRulesetBundleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public deleteStandaloneRulesetBundle(requestParameters: DeleteStandaloneRulesetBundleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const standalone_ruleset_bundle_id = requestParameters.standalone_ruleset_bundle_id;\n        if (standalone_ruleset_bundle_id === null || standalone_ruleset_bundle_id === undefined) {\n            throw new Error('Required parameter standalone_ruleset_bundle_id was null or undefined when calling deleteStandaloneRulesetBundle.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/standalone_ruleset_bundles/${encodeURIComponent(String(standalone_ruleset_bundle_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get a StandaloneRulesetLabel\n     * Get a StandaloneRulesetLabel\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getRulesetLabel(requestParameters: GetRulesetLabelRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<StandaloneRulesetLabel>;\n    public getRulesetLabel(requestParameters: GetRulesetLabelRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<StandaloneRulesetLabel>>;\n    public getRulesetLabel(requestParameters: GetRulesetLabelRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<StandaloneRulesetLabel>>;\n    public getRulesetLabel(requestParameters: GetRulesetLabelRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const label = requestParameters.label;\n        if (label === null || label === undefined) {\n            throw new Error('Required parameter label was null or undefined when calling getRulesetLabel.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_StandaloneRulesetLabel>(`${this.configuration.basePath}/v1/standalone_ruleset_labels/${encodeURIComponent(String(label))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _StandaloneRulesetLabel) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new StandaloneRulesetLabelImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a standalone rule\n     * Get a standalone rule\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getStandaloneRule(requestParameters: GetStandaloneRuleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<StandaloneRule>;\n    public getStandaloneRule(requestParameters: GetStandaloneRuleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<StandaloneRule>>;\n    public getStandaloneRule(requestParameters: GetStandaloneRuleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<StandaloneRule>>;\n    public getStandaloneRule(requestParameters: GetStandaloneRuleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const rule_id = requestParameters.rule_id;\n        if (rule_id === null || rule_id === undefined) {\n            throw new Error('Required parameter rule_id was null or undefined when calling getStandaloneRule.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_StandaloneRule>(`${this.configuration.basePath}/v1/standalone_rules/${encodeURIComponent(String(rule_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _StandaloneRule) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new StandaloneRuleImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a standalone rule policy\n     * Get a standalone rule policy\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getStandaloneRulePolicy(requestParameters: GetStandaloneRulePolicyRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<StandaloneRulePolicy>;\n    public getStandaloneRulePolicy(requestParameters: GetStandaloneRulePolicyRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<StandaloneRulePolicy>>;\n    public getStandaloneRulePolicy(requestParameters: GetStandaloneRulePolicyRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<StandaloneRulePolicy>>;\n    public getStandaloneRulePolicy(requestParameters: GetStandaloneRulePolicyRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const standalone_rule_policy_id = requestParameters.standalone_rule_policy_id;\n        if (standalone_rule_policy_id === null || standalone_rule_policy_id === undefined) {\n            throw new Error('Required parameter standalone_rule_policy_id was null or undefined when calling getStandaloneRulePolicy.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_StandaloneRulePolicy>(`${this.configuration.basePath}/v1/standalone_rule_policies/${encodeURIComponent(String(standalone_rule_policy_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _StandaloneRulePolicy) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new StandaloneRulePolicyImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a standalone rule tree\n     * Get a standalone rule tree\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getStandaloneRuleTree(requestParameters: GetStandaloneRuleTreeRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<StandaloneRuleTree>;\n    public getStandaloneRuleTree(requestParameters: GetStandaloneRuleTreeRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<StandaloneRuleTree>>;\n    public getStandaloneRuleTree(requestParameters: GetStandaloneRuleTreeRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<StandaloneRuleTree>>;\n    public getStandaloneRuleTree(requestParameters: GetStandaloneRuleTreeRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const standalone_rule_tree_id = requestParameters.standalone_rule_tree_id;\n        if (standalone_rule_tree_id === null || standalone_rule_tree_id === undefined) {\n            throw new Error('Required parameter standalone_rule_tree_id was null or undefined when calling getStandaloneRuleTree.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_StandaloneRuleTree>(`${this.configuration.basePath}/v1/standalone_rule_trees/${encodeURIComponent(String(standalone_rule_tree_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _StandaloneRuleTree) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new StandaloneRuleTreeImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a standalone ruleset\n     * Get a standalone ruleset\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getStandaloneRuleset(requestParameters: GetStandaloneRulesetRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<StandaloneRuleset>;\n    public getStandaloneRuleset(requestParameters: GetStandaloneRulesetRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<StandaloneRuleset>>;\n    public getStandaloneRuleset(requestParameters: GetStandaloneRulesetRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<StandaloneRuleset>>;\n    public getStandaloneRuleset(requestParameters: GetStandaloneRulesetRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const standalone_ruleset_id = requestParameters.standalone_ruleset_id;\n        if (standalone_ruleset_id === null || standalone_ruleset_id === undefined) {\n            throw new Error('Required parameter standalone_ruleset_id was null or undefined when calling getStandaloneRuleset.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_StandaloneRuleset>(`${this.configuration.basePath}/v1/standalone_rulesets/${encodeURIComponent(String(standalone_ruleset_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _StandaloneRuleset) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new StandaloneRulesetImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a standalone ruleset bundle\n     * Get a standalone ruleset bundle\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getStandaloneRulesetBundle(requestParameters: GetStandaloneRulesetBundleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<StandaloneRulesetBundle>;\n    public getStandaloneRulesetBundle(requestParameters: GetStandaloneRulesetBundleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<StandaloneRulesetBundle>>;\n    public getStandaloneRulesetBundle(requestParameters: GetStandaloneRulesetBundleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<StandaloneRulesetBundle>>;\n    public getStandaloneRulesetBundle(requestParameters: GetStandaloneRulesetBundleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const standalone_ruleset_bundle_id = requestParameters.standalone_ruleset_bundle_id;\n        if (standalone_ruleset_bundle_id === null || standalone_ruleset_bundle_id === undefined) {\n            throw new Error('Required parameter standalone_ruleset_bundle_id was null or undefined when calling getStandaloneRulesetBundle.');\n        }\n        const org_id = requestParameters.org_id;\n        const get_rulesets = requestParameters.get_rulesets;\n        const standalone_rulesets_etag = requestParameters.standalone_rulesets_etag;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (get_rulesets !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_rulesets, 'get_rulesets');\n        }\n        if (standalone_rulesets_etag !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>standalone_rulesets_etag, 'standalone_rulesets_etag');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_StandaloneRulesetBundle>(`${this.configuration.basePath}/v1/standalone_ruleset_bundles/${encodeURIComponent(String(standalone_ruleset_bundle_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _StandaloneRulesetBundle) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new StandaloneRulesetBundleImpl(response)\n            })\n        );\n    }\n\n    /**\n     * list StandaloneRulesetLabel\n     * List StandaloneRulesetLabel \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listRulesetLabels(requestParameters: ListRulesetLabelsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListStandaloneRulesetLabelsResponse>;\n    public listRulesetLabels(requestParameters: ListRulesetLabelsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListStandaloneRulesetLabelsResponse>>;\n    public listRulesetLabels(requestParameters: ListRulesetLabelsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListStandaloneRulesetLabelsResponse>>;\n    public listRulesetLabels(requestParameters: ListRulesetLabelsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const label = requestParameters.label;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (label !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>label, 'label');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListStandaloneRulesetLabelsResponse>(`${this.configuration.basePath}/v1/standalone_ruleset_labels`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListStandaloneRulesetLabelsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListStandaloneRulesetLabelsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all standalone rule policies\n     * List all standalone rule policies matching the provided query parameters. Perform keyset pagination by setting the page_at_id parameter to the id for the next page to fetch. Set it to &#x60;\\&quot;\\&quot;&#x60; to start from the beginning. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listStandaloneRulePolicies(requestParameters: ListStandaloneRulePoliciesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListStandaloneRulePoliciesResponse>;\n    public listStandaloneRulePolicies(requestParameters: ListStandaloneRulePoliciesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListStandaloneRulePoliciesResponse>>;\n    public listStandaloneRulePolicies(requestParameters: ListStandaloneRulePoliciesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListStandaloneRulePoliciesResponse>>;\n    public listStandaloneRulePolicies(requestParameters: ListStandaloneRulePoliciesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const object_type = requestParameters.object_type;\n        const object_types = requestParameters.object_types;\n        const object_id = requestParameters.object_id;\n        const policy_class = requestParameters.policy_class;\n        const policy_classes = requestParameters.policy_classes;\n        const policy_instance = requestParameters.policy_instance;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (object_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>object_type, 'object_type');\n        }\n        if (object_types) {\n            object_types.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'object_types');\n            })\n        }\n        if (object_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>object_id, 'object_id');\n        }\n        if (policy_class !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>policy_class, 'policy_class');\n        }\n        if (policy_classes) {\n            policy_classes.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'policy_classes');\n            })\n        }\n        if (policy_instance !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>policy_instance, 'policy_instance');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListStandaloneRulePoliciesResponse>(`${this.configuration.basePath}/v1/standalone_rule_policies`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListStandaloneRulePoliciesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListStandaloneRulePoliciesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all standalone rule trees\n     * List all standalone rule tres matching the provided query parameters. Perform keyset pagination by setting the page_at_id parameter to the id for the next page to fetch. Set it to &#x60;\\&quot;\\&quot;&#x60; to start from the beginning. Searching for rule_id will return any tree that references that rule. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listStandaloneRuleTrees(requestParameters: ListStandaloneRuleTreesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListStandaloneRuleTreesResponse>;\n    public listStandaloneRuleTrees(requestParameters: ListStandaloneRuleTreesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListStandaloneRuleTreesResponse>>;\n    public listStandaloneRuleTrees(requestParameters: ListStandaloneRuleTreesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListStandaloneRuleTreesResponse>>;\n    public listStandaloneRuleTrees(requestParameters: ListStandaloneRuleTreesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const name = requestParameters.name;\n        const page_at_id = requestParameters.page_at_id;\n        const rule_tree_id = requestParameters.rule_tree_id;\n        const org_id = requestParameters.org_id;\n        const standalone_rule_policy_ids = requestParameters.standalone_rule_policy_ids;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name, 'name');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (rule_tree_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>rule_tree_id, 'rule_tree_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (standalone_rule_policy_ids) {\n            standalone_rule_policy_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'standalone_rule_policy_ids');\n            })\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListStandaloneRuleTreesResponse>(`${this.configuration.basePath}/v1/standalone_rule_trees`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListStandaloneRuleTreesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListStandaloneRuleTreesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all standalone rules\n     * List all standalone rule matching the provided query parameters. Perform keyset pagination by setting the page_at_id parameter to the id for the next page to fetch. Set it to &#x60;\\&quot;\\&quot;&#x60; to start from the beginning. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listStandaloneRules(requestParameters: ListStandaloneRulesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListStandaloneRulesResponse>;\n    public listStandaloneRules(requestParameters: ListStandaloneRulesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListStandaloneRulesResponse>>;\n    public listStandaloneRules(requestParameters: ListStandaloneRulesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListStandaloneRulesResponse>>;\n    public listStandaloneRules(requestParameters: ListStandaloneRulesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const name = requestParameters.name;\n        const page_at_id = requestParameters.page_at_id;\n        const rule_id = requestParameters.rule_id;\n        const org_id = requestParameters.org_id;\n        const standalone_rule_policy_ids = requestParameters.standalone_rule_policy_ids;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name, 'name');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (rule_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>rule_id, 'rule_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (standalone_rule_policy_ids) {\n            standalone_rule_policy_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'standalone_rule_policy_ids');\n            })\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListStandaloneRulesResponse>(`${this.configuration.basePath}/v1/standalone_rules`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListStandaloneRulesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListStandaloneRulesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all standalone ruleset bundles\n     * List all standalone ruleset bundles matching the provided query parameters. Perform keyset pagination by setting the page_at_id parameter to the id for the next page to fetch. Set it to &#x60;\\&quot;\\&quot;&#x60; to start from the beginning. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listStandaloneRulesetBundles(requestParameters: ListStandaloneRulesetBundlesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListStandaloneRulesetBundlesResponse>;\n    public listStandaloneRulesetBundles(requestParameters: ListStandaloneRulesetBundlesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListStandaloneRulesetBundlesResponse>>;\n    public listStandaloneRulesetBundles(requestParameters: ListStandaloneRulesetBundlesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListStandaloneRulesetBundlesResponse>>;\n    public listStandaloneRulesetBundles(requestParameters: ListStandaloneRulesetBundlesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const name = requestParameters.name;\n        const page_at_id = requestParameters.page_at_id;\n        const org_id = requestParameters.org_id;\n        const label = requestParameters.label;\n        const get_rulesets = requestParameters.get_rulesets;\n        const standalone_ruleset_bundles_etag = requestParameters.standalone_ruleset_bundles_etag;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name, 'name');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (label !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>label, 'label');\n        }\n        if (get_rulesets !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_rulesets, 'get_rulesets');\n        }\n        if (standalone_ruleset_bundles_etag !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>standalone_ruleset_bundles_etag, 'standalone_ruleset_bundles_etag');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListStandaloneRulesetBundlesResponse>(`${this.configuration.basePath}/v1/standalone_ruleset_bundles`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListStandaloneRulesetBundlesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListStandaloneRulesetBundlesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List all standalone rulesets\n     * List all standalone rulesets matching the provided query parameters. Perform keyset pagination by setting the page_at_id parameter to the id for the next page to fetch. Set it to &#x60;\\&quot;\\&quot;&#x60; to start from the beginning. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listStandaloneRulesets(requestParameters: ListStandaloneRulesetsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListStandaloneRulesetsResponse>;\n    public listStandaloneRulesets(requestParameters: ListStandaloneRulesetsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListStandaloneRulesetsResponse>>;\n    public listStandaloneRulesets(requestParameters: ListStandaloneRulesetsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListStandaloneRulesetsResponse>>;\n    public listStandaloneRulesets(requestParameters: ListStandaloneRulesetsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const name = requestParameters.name;\n        const page_at_id = requestParameters.page_at_id;\n        const org_id = requestParameters.org_id;\n        const label = requestParameters.label;\n        const standalone_rule_policy_ids = requestParameters.standalone_rule_policy_ids;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name, 'name');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (label !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>label, 'label');\n        }\n        if (standalone_rule_policy_ids) {\n            standalone_rule_policy_ids.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'standalone_rule_policy_ids');\n            })\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListStandaloneRulesetsResponse>(`${this.configuration.basePath}/v1/standalone_rulesets`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListStandaloneRulesetsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListStandaloneRulesetsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * update a standalone rule\n     * update a standalone rule\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceStandaloneRule(requestParameters: ReplaceStandaloneRuleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<StandaloneRule>;\n    public replaceStandaloneRule(requestParameters: ReplaceStandaloneRuleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<StandaloneRule>>;\n    public replaceStandaloneRule(requestParameters: ReplaceStandaloneRuleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<StandaloneRule>>;\n    public replaceStandaloneRule(requestParameters: ReplaceStandaloneRuleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const rule_id = requestParameters.rule_id;\n        if (rule_id === null || rule_id === undefined) {\n            throw new Error('Required parameter rule_id was null or undefined when calling replaceStandaloneRule.');\n        }\n        const StandaloneRule = requestParameters.StandaloneRule;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_StandaloneRule>(`${this.configuration.basePath}/v1/standalone_rules/${encodeURIComponent(String(rule_id))}`,\n                    StandaloneRule,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _StandaloneRule) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new StandaloneRuleImpl(response)\n            })\n        );\n    }\n\n    /**\n     * update a standalone rule policy\n     * update a standalone rule policy\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceStandaloneRulePolicy(requestParameters: ReplaceStandaloneRulePolicyRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<StandaloneRulePolicy>;\n    public replaceStandaloneRulePolicy(requestParameters: ReplaceStandaloneRulePolicyRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<StandaloneRulePolicy>>;\n    public replaceStandaloneRulePolicy(requestParameters: ReplaceStandaloneRulePolicyRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<StandaloneRulePolicy>>;\n    public replaceStandaloneRulePolicy(requestParameters: ReplaceStandaloneRulePolicyRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const standalone_rule_policy_id = requestParameters.standalone_rule_policy_id;\n        if (standalone_rule_policy_id === null || standalone_rule_policy_id === undefined) {\n            throw new Error('Required parameter standalone_rule_policy_id was null or undefined when calling replaceStandaloneRulePolicy.');\n        }\n        const StandaloneRulePolicy = requestParameters.StandaloneRulePolicy;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_StandaloneRulePolicy>(`${this.configuration.basePath}/v1/standalone_rule_policies/${encodeURIComponent(String(standalone_rule_policy_id))}`,\n                    StandaloneRulePolicy,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _StandaloneRulePolicy) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new StandaloneRulePolicyImpl(response)\n            })\n        );\n    }\n\n    /**\n     * update a standalone rule tree\n     * update a standalone rule tree\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceStandaloneRuleTree(requestParameters: ReplaceStandaloneRuleTreeRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<StandaloneRuleTree>;\n    public replaceStandaloneRuleTree(requestParameters: ReplaceStandaloneRuleTreeRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<StandaloneRuleTree>>;\n    public replaceStandaloneRuleTree(requestParameters: ReplaceStandaloneRuleTreeRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<StandaloneRuleTree>>;\n    public replaceStandaloneRuleTree(requestParameters: ReplaceStandaloneRuleTreeRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const standalone_rule_tree_id = requestParameters.standalone_rule_tree_id;\n        if (standalone_rule_tree_id === null || standalone_rule_tree_id === undefined) {\n            throw new Error('Required parameter standalone_rule_tree_id was null or undefined when calling replaceStandaloneRuleTree.');\n        }\n        const StandaloneRuleTree = requestParameters.StandaloneRuleTree;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_StandaloneRuleTree>(`${this.configuration.basePath}/v1/standalone_rule_trees/${encodeURIComponent(String(standalone_rule_tree_id))}`,\n                    StandaloneRuleTree,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _StandaloneRuleTree) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new StandaloneRuleTreeImpl(response)\n            })\n        );\n    }\n\n    /**\n     * update a standalone ruleset\n     * update a standalone ruleset\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceStandaloneRuleset(requestParameters: ReplaceStandaloneRulesetRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<StandaloneRuleset>;\n    public replaceStandaloneRuleset(requestParameters: ReplaceStandaloneRulesetRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<StandaloneRuleset>>;\n    public replaceStandaloneRuleset(requestParameters: ReplaceStandaloneRulesetRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<StandaloneRuleset>>;\n    public replaceStandaloneRuleset(requestParameters: ReplaceStandaloneRulesetRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const standalone_ruleset_id = requestParameters.standalone_ruleset_id;\n        if (standalone_ruleset_id === null || standalone_ruleset_id === undefined) {\n            throw new Error('Required parameter standalone_ruleset_id was null or undefined when calling replaceStandaloneRuleset.');\n        }\n        const StandaloneRuleset = requestParameters.StandaloneRuleset;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_StandaloneRuleset>(`${this.configuration.basePath}/v1/standalone_rulesets/${encodeURIComponent(String(standalone_ruleset_id))}`,\n                    StandaloneRuleset,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _StandaloneRuleset) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new StandaloneRulesetImpl(response)\n            })\n        );\n    }\n\n    /**\n     * update a standalone ruleset bundle\n     * update a standalone ruleset bundle\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceStandaloneRulesetBundle(requestParameters: ReplaceStandaloneRulesetBundleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<StandaloneRulesetBundle>;\n    public replaceStandaloneRulesetBundle(requestParameters: ReplaceStandaloneRulesetBundleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<StandaloneRulesetBundle>>;\n    public replaceStandaloneRulesetBundle(requestParameters: ReplaceStandaloneRulesetBundleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<StandaloneRulesetBundle>>;\n    public replaceStandaloneRulesetBundle(requestParameters: ReplaceStandaloneRulesetBundleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const standalone_ruleset_bundle_id = requestParameters.standalone_ruleset_bundle_id;\n        if (standalone_ruleset_bundle_id === null || standalone_ruleset_bundle_id === undefined) {\n            throw new Error('Required parameter standalone_ruleset_bundle_id was null or undefined when calling replaceStandaloneRulesetBundle.');\n        }\n        const StandaloneRulesetBundle = requestParameters.StandaloneRulesetBundle;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_StandaloneRulesetBundle>(`${this.configuration.basePath}/v1/standalone_ruleset_bundles/${encodeURIComponent(String(standalone_ruleset_bundle_id))}`,\n                    StandaloneRulesetBundle,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _StandaloneRulesetBundle) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new StandaloneRulesetBundleImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _APIKey, APIKey, APIKeyImpl } from '../model/models';\nimport { _APIKeyIntrospect, APIKeyIntrospect, APIKeyIntrospectImpl } from '../model/models';\nimport { _APIKeyIntrospectResponse, APIKeyIntrospectResponse, APIKeyIntrospectResponseImpl } from '../model/models';\nimport { _APIKeyOpStatus, APIKeyOpStatus, APIKeyOpStatusImpl } from '../model/models';\nimport { _AuthenticationDocument, AuthenticationDocument, AuthenticationDocumentImpl } from '../model/models';\nimport { _BulkSessionOperationResponse, BulkSessionOperationResponse, BulkSessionOperationResponseImpl } from '../model/models';\nimport { _BulkTokenRevoke, BulkTokenRevoke, BulkTokenRevokeImpl } from '../model/models';\nimport { _BulkTokenRevokeResponse, BulkTokenRevokeResponse, BulkTokenRevokeResponseImpl } from '../model/models';\nimport { _CreateSessionAndTokenRequest, CreateSessionAndTokenRequest, CreateSessionAndTokenRequestImpl } from '../model/models';\nimport { _CreateSessionAndTokenResponse, CreateSessionAndTokenResponse, CreateSessionAndTokenResponseImpl } from '../model/models';\nimport { _CreateTokenRequest, CreateTokenRequest, CreateTokenRequestImpl } from '../model/models';\nimport { _CreateUserDataTokenRequest, CreateUserDataTokenRequest, CreateUserDataTokenRequestImpl } from '../model/models';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _IdentityAssertion, IdentityAssertion, IdentityAssertionImpl } from '../model/models';\nimport { _IdentityAssertionResponse, IdentityAssertionResponse, IdentityAssertionResponseImpl } from '../model/models';\nimport { _ListAPIKeysResponse, ListAPIKeysResponse, ListAPIKeysResponseImpl } from '../model/models';\nimport { _ListAuthenticationDocumentResponse, ListAuthenticationDocumentResponse, ListAuthenticationDocumentResponseImpl } from '../model/models';\nimport { _ListJWKS, ListJWKS, ListJWKSImpl } from '../model/models';\nimport { _ListSessionsResponse, ListSessionsResponse, ListSessionsResponseImpl } from '../model/models';\nimport { _ListTokensResponse, ListTokensResponse, ListTokensResponseImpl } from '../model/models';\nimport { _ManyOrgTokenIntrospectResponse, ManyOrgTokenIntrospectResponse, ManyOrgTokenIntrospectResponseImpl } from '../model/models';\nimport { _RawToken, RawToken, RawTokenImpl } from '../model/models';\nimport { _RefreshTokenRequest, RefreshTokenRequest, RefreshTokenRequestImpl } from '../model/models';\nimport { _Session, Session, SessionImpl } from '../model/models';\nimport { _SessionChallenge, SessionChallenge, SessionChallengeImpl } from '../model/models';\nimport { _Token, Token, TokenImpl } from '../model/models';\nimport { _TokenIntrospect, TokenIntrospect, TokenIntrospectImpl } from '../model/models';\nimport { _TokenReissueRequest, TokenReissueRequest, TokenReissueRequestImpl } from '../model/models';\nimport { _TokenRevoke, TokenRevoke, TokenRevokeImpl } from '../model/models';\nimport { _UserSessionIdentifiers, UserSessionIdentifiers, UserSessionIdentifiersImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    TokensServiceInterface,\n    CreateApiKeyRequestParams,\n    CreateApiKeyIntrospectionRequestParams,\n    CreateAuthenticationDocumentRequestParams,\n    CreateBulkDeleteSessionTaskRequestParams,\n    CreateBulkRevokeSessionTaskRequestParams,\n    CreateBulkRevokeTokenTaskRequestParams,\n    CreateIntrospectTokenRequestParams,\n    CreateIntrospectTokenAllSubOrgsRequestParams,\n    CreateReissuedTokenRequestParams,\n    CreateRevokeTokenTaskRequestParams,\n    CreateSessionRequestParams,\n    CreateSessionAndTokenRequestParams,\n    CreateSessionChallengeRequestParams,\n    CreateTokenRequestParams,\n    CreateTokenValidationRequestParams,\n    CreateUserDataTokenRequestParams,\n    DeleteApiKeyRequestParams,\n    DeleteAuthenticationDocumentRequestParams,\n    DeleteSessionRequestParams,\n    GetApiKeyRequestParams,\n    GetAuthenticationDocumentRequestParams,\n    GetSessionRequestParams,\n    GetTokenRequestParams,\n    ListApiKeysRequestParams,\n    ListAuthenticationDocumentsRequestParams,\n    ListSessionsRequestParams,\n    ListTokensRequestParams,\n    RefreshTokenRequestParams,\n    ReplaceApiKeyRequestParams,\n    ReplaceSessionRequestParams,\n    UpdateSessionChallengeRequestParams,\n    ValidateIdentityAssertionRequestParams\n} from './tokens.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class TokensService implements TokensServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Create an API Key\n     * Creates an API Key with the provided body. Note that the secret which serves as the key to provide access is only available when the API Key is created. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createApiKey(requestParameters: CreateApiKeyRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<APIKey>;\n    public createApiKey(requestParameters: CreateApiKeyRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<APIKey>>;\n    public createApiKey(requestParameters: CreateApiKeyRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<APIKey>>;\n    public createApiKey(requestParameters: CreateApiKeyRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const APIKey = requestParameters.APIKey;\n        if (APIKey === null || APIKey === undefined) {\n            throw new Error('Required parameter APIKey was null or undefined when calling createApiKey.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_APIKey>(`${this.configuration.basePath}/v1/api_keys`,\n                    APIKey,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _APIKey) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new APIKeyImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Introspect an API Key\n     * Introspect an API Key to determine its permissions\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createApiKeyIntrospection(requestParameters: CreateApiKeyIntrospectionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<APIKeyIntrospectResponse>;\n    public createApiKeyIntrospection(requestParameters: CreateApiKeyIntrospectionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<APIKeyIntrospectResponse>>;\n    public createApiKeyIntrospection(requestParameters: CreateApiKeyIntrospectionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<APIKeyIntrospectResponse>>;\n    public createApiKeyIntrospection(requestParameters: CreateApiKeyIntrospectionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const APIKeyIntrospect = requestParameters.APIKeyIntrospect;\n        if (APIKeyIntrospect === null || APIKeyIntrospect === undefined) {\n            throw new Error('Required parameter APIKeyIntrospect was null or undefined when calling createApiKeyIntrospection.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n        return of(undefined).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_APIKeyIntrospectResponse>(`${this.configuration.basePath}/v1/api_keys/introspect`,\n                    APIKeyIntrospect,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _APIKeyIntrospectResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new APIKeyIntrospectResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a authentication document\n     * Creates an authentication document with the provided body\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createAuthenticationDocument(requestParameters: CreateAuthenticationDocumentRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AuthenticationDocument>;\n    public createAuthenticationDocument(requestParameters: CreateAuthenticationDocumentRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AuthenticationDocument>>;\n    public createAuthenticationDocument(requestParameters: CreateAuthenticationDocumentRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AuthenticationDocument>>;\n    public createAuthenticationDocument(requestParameters: CreateAuthenticationDocumentRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const AuthenticationDocument = requestParameters.AuthenticationDocument;\n        if (AuthenticationDocument === null || AuthenticationDocument === undefined) {\n            throw new Error('Required parameter AuthenticationDocument was null or undefined when calling createAuthenticationDocument.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_AuthenticationDocument>(`${this.configuration.basePath}/v1/authentication_documents`,\n                    AuthenticationDocument,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AuthenticationDocument) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AuthenticationDocumentImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a set of sessions\n     * Delete a set of sessions. The body parameters determine the set of sessions\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createBulkDeleteSessionTask(requestParameters: CreateBulkDeleteSessionTaskRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<BulkSessionOperationResponse>;\n    public createBulkDeleteSessionTask(requestParameters: CreateBulkDeleteSessionTaskRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<BulkSessionOperationResponse>>;\n    public createBulkDeleteSessionTask(requestParameters: CreateBulkDeleteSessionTaskRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<BulkSessionOperationResponse>>;\n    public createBulkDeleteSessionTask(requestParameters: CreateBulkDeleteSessionTaskRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const UserSessionIdentifiers = requestParameters.UserSessionIdentifiers;\n        if (UserSessionIdentifiers === null || UserSessionIdentifiers === undefined) {\n            throw new Error('Required parameter UserSessionIdentifiers was null or undefined when calling createBulkDeleteSessionTask.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_BulkSessionOperationResponse>(`${this.configuration.basePath}/v1/sessions/bulk_delete`,\n                    UserSessionIdentifiers,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _BulkSessionOperationResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new BulkSessionOperationResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Revoke a set of sessions\n     * Revoke a set of sessions. The body parameters determine the set of sessions\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createBulkRevokeSessionTask(requestParameters: CreateBulkRevokeSessionTaskRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<BulkSessionOperationResponse>;\n    public createBulkRevokeSessionTask(requestParameters: CreateBulkRevokeSessionTaskRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<BulkSessionOperationResponse>>;\n    public createBulkRevokeSessionTask(requestParameters: CreateBulkRevokeSessionTaskRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<BulkSessionOperationResponse>>;\n    public createBulkRevokeSessionTask(requestParameters: CreateBulkRevokeSessionTaskRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const UserSessionIdentifiers = requestParameters.UserSessionIdentifiers;\n        if (UserSessionIdentifiers === null || UserSessionIdentifiers === undefined) {\n            throw new Error('Required parameter UserSessionIdentifiers was null or undefined when calling createBulkRevokeSessionTask.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_BulkSessionOperationResponse>(`${this.configuration.basePath}/v1/sessions/bulk_revoke`,\n                    UserSessionIdentifiers,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _BulkSessionOperationResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new BulkSessionOperationResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Revoke a set of tokens\n     * Revoke a set of tokens. The body parameters determine the set of tokens\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createBulkRevokeTokenTask(requestParameters: CreateBulkRevokeTokenTaskRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<BulkTokenRevokeResponse>;\n    public createBulkRevokeTokenTask(requestParameters: CreateBulkRevokeTokenTaskRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<BulkTokenRevokeResponse>>;\n    public createBulkRevokeTokenTask(requestParameters: CreateBulkRevokeTokenTaskRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<BulkTokenRevokeResponse>>;\n    public createBulkRevokeTokenTask(requestParameters: CreateBulkRevokeTokenTaskRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const BulkTokenRevoke = requestParameters.BulkTokenRevoke;\n        if (BulkTokenRevoke === null || BulkTokenRevoke === undefined) {\n            throw new Error('Required parameter BulkTokenRevoke was null or undefined when calling createBulkRevokeTokenTask.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_BulkTokenRevokeResponse>(`${this.configuration.basePath}/v1/tokens/bulk_revoke`,\n                    BulkTokenRevoke,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _BulkTokenRevokeResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new BulkTokenRevokeResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Introspect a token\n     * Introspect a token\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createIntrospectToken(requestParameters: CreateIntrospectTokenRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Token>;\n    public createIntrospectToken(requestParameters: CreateIntrospectTokenRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Token>>;\n    public createIntrospectToken(requestParameters: CreateIntrospectTokenRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Token>>;\n    public createIntrospectToken(requestParameters: CreateIntrospectTokenRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const TokenIntrospect = requestParameters.TokenIntrospect;\n        if (TokenIntrospect === null || TokenIntrospect === undefined) {\n            throw new Error('Required parameter TokenIntrospect was null or undefined when calling createIntrospectToken.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n        return of(undefined).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Token>(`${this.configuration.basePath}/v1/tokens/introspect`,\n                    TokenIntrospect,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Token) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new TokenImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Introspect a token in all sub orgs\n     * Introspect a token in all sub orgs\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createIntrospectTokenAllSubOrgs(requestParameters: CreateIntrospectTokenAllSubOrgsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ManyOrgTokenIntrospectResponse>;\n    public createIntrospectTokenAllSubOrgs(requestParameters: CreateIntrospectTokenAllSubOrgsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ManyOrgTokenIntrospectResponse>>;\n    public createIntrospectTokenAllSubOrgs(requestParameters: CreateIntrospectTokenAllSubOrgsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ManyOrgTokenIntrospectResponse>>;\n    public createIntrospectTokenAllSubOrgs(requestParameters: CreateIntrospectTokenAllSubOrgsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const TokenIntrospect = requestParameters.TokenIntrospect;\n        if (TokenIntrospect === null || TokenIntrospect === undefined) {\n            throw new Error('Required parameter TokenIntrospect was null or undefined when calling createIntrospectTokenAllSubOrgs.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n        return of(undefined).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_ManyOrgTokenIntrospectResponse>(`${this.configuration.basePath}/v1/tokens/introspect_all_sub_orgs`,\n                    TokenIntrospect,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ManyOrgTokenIntrospectResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ManyOrgTokenIntrospectResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Issue a new token from another\n     * Issues a new token with the same or reduced scope to the one presented. Use this to retrieve a token for accessing a different organisation than the one you\\&#39;re currently operating on. Note that the presented token remains valid if it already was. If it is not valid, or the you do not have permissions in the requested organisation, the request will fail. The token will expire at the same time as the presented token. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createReissuedToken(requestParameters: CreateReissuedTokenRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<RawToken>;\n    public createReissuedToken(requestParameters: CreateReissuedTokenRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<RawToken>>;\n    public createReissuedToken(requestParameters: CreateReissuedTokenRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<RawToken>>;\n    public createReissuedToken(requestParameters: CreateReissuedTokenRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const TokenReissueRequest = requestParameters.TokenReissueRequest;\n        if (TokenReissueRequest === null || TokenReissueRequest === undefined) {\n            throw new Error('Required parameter TokenReissueRequest was null or undefined when calling createReissuedToken.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n        return of(undefined).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_RawToken>(`${this.configuration.basePath}/v1/tokens/reissue`,\n                    TokenReissueRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _RawToken) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RawTokenImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Revoke a token\n     * Revoke a token\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createRevokeTokenTask(requestParameters: CreateRevokeTokenTaskRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public createRevokeTokenTask(requestParameters: CreateRevokeTokenTaskRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public createRevokeTokenTask(requestParameters: CreateRevokeTokenTaskRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public createRevokeTokenTask(requestParameters: CreateRevokeTokenTaskRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const TokenRevoke = requestParameters.TokenRevoke;\n        if (TokenRevoke === null || TokenRevoke === undefined) {\n            throw new Error('Required parameter TokenRevoke was null or undefined when calling createRevokeTokenTask.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n        return of(undefined).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<any>(`${this.configuration.basePath}/v1/tokens/revoke`,\n                    TokenRevoke,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Create a session\n     * Create a session\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createSession(requestParameters: CreateSessionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Session>;\n    public createSession(requestParameters: CreateSessionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Session>>;\n    public createSession(requestParameters: CreateSessionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Session>>;\n    public createSession(requestParameters: CreateSessionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const Session = requestParameters.Session;\n        if (Session === null || Session === undefined) {\n            throw new Error('Required parameter Session was null or undefined when calling createSession.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_Session>(`${this.configuration.basePath}/v1/sessions`,\n                    Session,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Session) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new SessionImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a session and a token associated with the session\n     * Create a session and a token associated with the session\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createSessionAndToken(requestParameters: CreateSessionAndTokenRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<CreateSessionAndTokenRequest>;\n    public createSessionAndToken(requestParameters: CreateSessionAndTokenRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<CreateSessionAndTokenRequest>>;\n    public createSessionAndToken(requestParameters: CreateSessionAndTokenRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<CreateSessionAndTokenRequest>>;\n    public createSessionAndToken(requestParameters: CreateSessionAndTokenRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const CreateSessionAndTokenResponse = requestParameters.CreateSessionAndTokenResponse;\n        if (CreateSessionAndTokenResponse === null || CreateSessionAndTokenResponse === undefined) {\n            throw new Error('Required parameter CreateSessionAndTokenResponse was null or undefined when calling createSessionAndToken.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_CreateSessionAndTokenRequest>(`${this.configuration.basePath}/v1/sessions/create_session_and_token`,\n                    CreateSessionAndTokenResponse,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _CreateSessionAndTokenRequest) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new CreateSessionAndTokenRequestImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a user challenge request for a session\n     * Create a user challenge request for a session\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createSessionChallenge(requestParameters: CreateSessionChallengeRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<SessionChallenge>;\n    public createSessionChallenge(requestParameters: CreateSessionChallengeRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<SessionChallenge>>;\n    public createSessionChallenge(requestParameters: CreateSessionChallengeRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<SessionChallenge>>;\n    public createSessionChallenge(requestParameters: CreateSessionChallengeRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const SessionChallenge = requestParameters.SessionChallenge;\n        if (SessionChallenge === null || SessionChallenge === undefined) {\n            throw new Error('Required parameter SessionChallenge was null or undefined when calling createSessionChallenge.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_SessionChallenge>(`${this.configuration.basePath}/v1/session_challenges`,\n                    SessionChallenge,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _SessionChallenge) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new SessionChallengeImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a token\n     * Create a token\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createToken(requestParameters: CreateTokenRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<RawToken>;\n    public createToken(requestParameters: CreateTokenRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<RawToken>>;\n    public createToken(requestParameters: CreateTokenRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<RawToken>>;\n    public createToken(requestParameters: CreateTokenRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const CreateTokenRequest = requestParameters.CreateTokenRequest;\n        if (CreateTokenRequest === null || CreateTokenRequest === undefined) {\n            throw new Error('Required parameter CreateTokenRequest was null or undefined when calling createToken.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_RawToken>(`${this.configuration.basePath}/v1/tokens`,\n                    CreateTokenRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _RawToken) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RawTokenImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Validate a token request\n     * Validate a token request prior to creating a token. This verifies the user has permission to access the scopes requested\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createTokenValidation(requestParameters: CreateTokenValidationRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<CreateTokenRequest>;\n    public createTokenValidation(requestParameters: CreateTokenValidationRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<CreateTokenRequest>>;\n    public createTokenValidation(requestParameters: CreateTokenValidationRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<CreateTokenRequest>>;\n    public createTokenValidation(requestParameters: CreateTokenValidationRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const CreateTokenRequest = requestParameters.CreateTokenRequest;\n        if (CreateTokenRequest === null || CreateTokenRequest === undefined) {\n            throw new Error('Required parameter CreateTokenRequest was null or undefined when calling createTokenValidation.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n        return of(undefined).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_CreateTokenRequest>(`${this.configuration.basePath}/v1/tokens/validations`,\n                    CreateTokenRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _CreateTokenRequest) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new CreateTokenRequestImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a User Data Token\n     * User Data tokens allow a signed in user to create specific claims that can be shared with another party that can be cryptographically verified.  The resulting RawToken can be cryptographically verified with /v1/user_data_tokens/jwks \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createUserDataToken(requestParameters: CreateUserDataTokenRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<RawToken>;\n    public createUserDataToken(requestParameters: CreateUserDataTokenRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<RawToken>>;\n    public createUserDataToken(requestParameters: CreateUserDataTokenRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<RawToken>>;\n    public createUserDataToken(requestParameters: CreateUserDataTokenRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const CreateUserDataTokenRequest = requestParameters.CreateUserDataTokenRequest;\n        if (CreateUserDataTokenRequest === null || CreateUserDataTokenRequest === undefined) {\n            throw new Error('Required parameter CreateUserDataTokenRequest was null or undefined when calling createUserDataToken.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_RawToken>(`${this.configuration.basePath}/v1/user_data_tokens`,\n                    CreateUserDataTokenRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _RawToken) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RawTokenImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete an API Key\n     * Deletes the requested API Key\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteApiKey(requestParameters: DeleteApiKeyRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteApiKey(requestParameters: DeleteApiKeyRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteApiKey(requestParameters: DeleteApiKeyRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteApiKey(requestParameters: DeleteApiKeyRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const api_key_id = requestParameters.api_key_id;\n        if (api_key_id === null || api_key_id === undefined) {\n            throw new Error('Required parameter api_key_id was null or undefined when calling deleteApiKey.');\n        }\n        const user_id = requestParameters.user_id;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/api_keys/${encodeURIComponent(String(api_key_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a authentication document\n     * Deletes the requested authentication document\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteAuthenticationDocument(requestParameters: DeleteAuthenticationDocumentRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteAuthenticationDocument(requestParameters: DeleteAuthenticationDocumentRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteAuthenticationDocument(requestParameters: DeleteAuthenticationDocumentRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteAuthenticationDocument(requestParameters: DeleteAuthenticationDocumentRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const document_id = requestParameters.document_id;\n        if (document_id === null || document_id === undefined) {\n            throw new Error('Required parameter document_id was null or undefined when calling deleteAuthenticationDocument.');\n        }\n        const user_id = requestParameters.user_id;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/authentication_documents/${encodeURIComponent(String(document_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a session\n     * Deletes the requested session\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteSession(requestParameters: DeleteSessionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteSession(requestParameters: DeleteSessionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteSession(requestParameters: DeleteSessionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteSession(requestParameters: DeleteSessionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const session_id = requestParameters.session_id;\n        if (session_id === null || session_id === undefined) {\n            throw new Error('Required parameter session_id was null or undefined when calling deleteSession.');\n        }\n        const user_id = requestParameters.user_id;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/sessions/${encodeURIComponent(String(session_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get an API Key\n     * Gets the requested API Key\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getApiKey(requestParameters: GetApiKeyRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<APIKey>;\n    public getApiKey(requestParameters: GetApiKeyRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<APIKey>>;\n    public getApiKey(requestParameters: GetApiKeyRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<APIKey>>;\n    public getApiKey(requestParameters: GetApiKeyRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const api_key_id = requestParameters.api_key_id;\n        if (api_key_id === null || api_key_id === undefined) {\n            throw new Error('Required parameter api_key_id was null or undefined when calling getApiKey.');\n        }\n        const user_id = requestParameters.user_id;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_APIKey>(`${this.configuration.basePath}/v1/api_keys/${encodeURIComponent(String(api_key_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _APIKey) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new APIKeyImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a authentication document\n     * Gets the requested authentication document\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getAuthenticationDocument(requestParameters: GetAuthenticationDocumentRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<AuthenticationDocument>;\n    public getAuthenticationDocument(requestParameters: GetAuthenticationDocumentRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<AuthenticationDocument>>;\n    public getAuthenticationDocument(requestParameters: GetAuthenticationDocumentRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<AuthenticationDocument>>;\n    public getAuthenticationDocument(requestParameters: GetAuthenticationDocumentRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const document_id = requestParameters.document_id;\n        if (document_id === null || document_id === undefined) {\n            throw new Error('Required parameter document_id was null or undefined when calling getAuthenticationDocument.');\n        }\n        const user_id = requestParameters.user_id;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_AuthenticationDocument>(`${this.configuration.basePath}/v1/authentication_documents/${encodeURIComponent(String(document_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _AuthenticationDocument) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new AuthenticationDocumentImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Return JSON Web Key Set (JWKS)\n     * Return a list of JSON object that represents a cryptographic key. The members of the object represent properties of the key, including its value.\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getJwks(observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListJWKS>;\n    public getJwks(observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListJWKS>>;\n    public getJwks(observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListJWKS>>;\n    public getJwks(observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n        return of(undefined).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListJWKS>(`${this.configuration.basePath}/v1/tokens/jwsk`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListJWKS) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListJWKSImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a session\n     * Gets the requested session\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getSession(requestParameters: GetSessionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Session>;\n    public getSession(requestParameters: GetSessionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Session>>;\n    public getSession(requestParameters: GetSessionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Session>>;\n    public getSession(requestParameters: GetSessionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const session_id = requestParameters.session_id;\n        if (session_id === null || session_id === undefined) {\n            throw new Error('Required parameter session_id was null or undefined when calling getSession.');\n        }\n        const user_id = requestParameters.user_id;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Session>(`${this.configuration.basePath}/v1/sessions/${encodeURIComponent(String(session_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Session) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new SessionImpl(response)\n            })\n        );\n    }\n\n    /**\n     * introspect token\n     * \\&quot;introspect a token that is provided via the bearer authorization header\\&quot; \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getToken(requestParameters: GetTokenRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Token>;\n    public getToken(requestParameters: GetTokenRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Token>>;\n    public getToken(requestParameters: GetTokenRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Token>>;\n    public getToken(requestParameters: GetTokenRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const exclude_roles = requestParameters.exclude_roles;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (exclude_roles !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>exclude_roles, 'exclude_roles');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_Token>(`${this.configuration.basePath}/v1/tokens/introspect_self`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Token) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new TokenImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Return JSON Web Key Set (JWKS)\n     * Return a list of JSON object that represents a cryptographic key. The members of the object represent properties of the key, including its value.\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getUserDataJwks(observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListJWKS>;\n    public getUserDataJwks(observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListJWKS>>;\n    public getUserDataJwks(observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListJWKS>>;\n    public getUserDataJwks(observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n        return of(undefined).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListJWKS>(`${this.configuration.basePath}/v1/user_data_tokens/jwks`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListJWKS) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListJWKSImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List API Keys\n     * Lists API Keys according to query parameters\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listApiKeys(requestParameters: ListApiKeysRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListAPIKeysResponse>;\n    public listApiKeys(requestParameters: ListApiKeysRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListAPIKeysResponse>>;\n    public listApiKeys(requestParameters: ListApiKeysRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListAPIKeysResponse>>;\n    public listApiKeys(requestParameters: ListApiKeysRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const user_id = requestParameters.user_id;\n        const org_id = requestParameters.org_id;\n        const search_direction = requestParameters.search_direction;\n        const api_key_op_status = requestParameters.api_key_op_status;\n        const sort_order = requestParameters.sort_order;\n        const page_at_created_date = requestParameters.page_at_created_date;\n        const not_api_key_op_status = requestParameters.not_api_key_op_status;\n        const label = requestParameters.label;\n        const valid_at = requestParameters.valid_at;\n        const name = requestParameters.name;\n        const scopes = requestParameters.scopes;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (search_direction !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>search_direction, 'search_direction');\n        }\n        if (api_key_op_status !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>api_key_op_status, 'api_key_op_status');\n        }\n        if (sort_order !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>sort_order, 'sort_order');\n        }\n        if (page_at_created_date !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_created_date, 'page_at_created_date');\n        }\n        if (not_api_key_op_status !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>not_api_key_op_status, 'not_api_key_op_status');\n        }\n        if (label !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>label, 'label');\n        }\n        if (valid_at !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>valid_at, 'valid_at');\n        }\n        if (name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>name, 'name');\n        }\n        if (scopes) {\n            scopes.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'scopes');\n            })\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListAPIKeysResponse>(`${this.configuration.basePath}/v1/api_keys`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListAPIKeysResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListAPIKeysResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List authentication documents\n     * Lists authentication documents according to query parameters\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listAuthenticationDocuments(requestParameters: ListAuthenticationDocumentsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListAuthenticationDocumentResponse>;\n    public listAuthenticationDocuments(requestParameters: ListAuthenticationDocumentsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListAuthenticationDocumentResponse>>;\n    public listAuthenticationDocuments(requestParameters: ListAuthenticationDocumentsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListAuthenticationDocumentResponse>>;\n    public listAuthenticationDocuments(requestParameters: ListAuthenticationDocumentsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const user_id = requestParameters.user_id;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListAuthenticationDocumentResponse>(`${this.configuration.basePath}/v1/authentication_documents`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListAuthenticationDocumentResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListAuthenticationDocumentResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List Sessions\n     * Lists Sessions according to query parameters\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listSessions(requestParameters: ListSessionsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListSessionsResponse>;\n    public listSessions(requestParameters: ListSessionsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListSessionsResponse>>;\n    public listSessions(requestParameters: ListSessionsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListSessionsResponse>>;\n    public listSessions(requestParameters: ListSessionsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const user_id = requestParameters.user_id;\n        const org_id = requestParameters.org_id;\n        const revoked = requestParameters.revoked;\n        const created_time = requestParameters.created_time;\n        const previous_created_time = requestParameters.previous_created_time;\n        const previous_user_id = requestParameters.previous_user_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (revoked !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>revoked, 'revoked');\n        }\n        if (created_time !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>created_time, 'created_time');\n        }\n        if (previous_created_time !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>previous_created_time, 'previous_created_time');\n        }\n        if (previous_user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>previous_user_id, 'previous_user_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListSessionsResponse>(`${this.configuration.basePath}/v1/sessions`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListSessionsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListSessionsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Query tokens\n     * Query tokens\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listTokens(requestParameters: ListTokensRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListTokensResponse>;\n    public listTokens(requestParameters: ListTokensRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListTokensResponse>>;\n    public listTokens(requestParameters: ListTokensRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListTokensResponse>>;\n    public listTokens(requestParameters: ListTokensRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const sub = requestParameters.sub;\n        const exp_from = requestParameters.exp_from;\n        const exp_to = requestParameters.exp_to;\n        const iat_from = requestParameters.iat_from;\n        const iat_to = requestParameters.iat_to;\n        const jti = requestParameters.jti;\n        const org = requestParameters.org;\n        const revoked = requestParameters.revoked;\n        const session = requestParameters.session;\n        const scopes = requestParameters.scopes;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (sub !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>sub, 'sub');\n        }\n        if (exp_from !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>exp_from, 'exp_from');\n        }\n        if (exp_to !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>exp_to, 'exp_to');\n        }\n        if (iat_from !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>iat_from, 'iat_from');\n        }\n        if (iat_to !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>iat_to, 'iat_to');\n        }\n        if (jti !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>jti, 'jti');\n        }\n        if (org !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org, 'org');\n        }\n        if (revoked !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>revoked, 'revoked');\n        }\n        if (session !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>session, 'session');\n        }\n        if (scopes) {\n            scopes.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'scopes');\n            })\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListTokensResponse>(`${this.configuration.basePath}/v1/tokens`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListTokensResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListTokensResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Refresh a token\n     * Refresh a token\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public refreshToken(requestParameters: RefreshTokenRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<RawToken>;\n    public refreshToken(requestParameters: RefreshTokenRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<RawToken>>;\n    public refreshToken(requestParameters: RefreshTokenRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<RawToken>>;\n    public refreshToken(requestParameters: RefreshTokenRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const RefreshTokenRequest = requestParameters.RefreshTokenRequest;\n        if (RefreshTokenRequest === null || RefreshTokenRequest === undefined) {\n            throw new Error('Required parameter RefreshTokenRequest was null or undefined when calling refreshToken.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_RawToken>(`${this.configuration.basePath}/v1/tokens/refresh`,\n                    RefreshTokenRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _RawToken) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RawTokenImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update an API key\n     * Update an API key\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceApiKey(requestParameters: ReplaceApiKeyRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<APIKey>;\n    public replaceApiKey(requestParameters: ReplaceApiKeyRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<APIKey>>;\n    public replaceApiKey(requestParameters: ReplaceApiKeyRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<APIKey>>;\n    public replaceApiKey(requestParameters: ReplaceApiKeyRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const api_key_id = requestParameters.api_key_id;\n        if (api_key_id === null || api_key_id === undefined) {\n            throw new Error('Required parameter api_key_id was null or undefined when calling replaceApiKey.');\n        }\n        const APIKey = requestParameters.APIKey;\n        if (APIKey === null || APIKey === undefined) {\n            throw new Error('Required parameter APIKey was null or undefined when calling replaceApiKey.');\n        }\n        const user_id = requestParameters.user_id;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_APIKey>(`${this.configuration.basePath}/v1/api_keys/${encodeURIComponent(String(api_key_id))}`,\n                    APIKey,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _APIKey) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new APIKeyImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a session\n     * Update a session\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceSession(requestParameters: ReplaceSessionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<Session>;\n    public replaceSession(requestParameters: ReplaceSessionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<Session>>;\n    public replaceSession(requestParameters: ReplaceSessionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<Session>>;\n    public replaceSession(requestParameters: ReplaceSessionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const session_id = requestParameters.session_id;\n        if (session_id === null || session_id === undefined) {\n            throw new Error('Required parameter session_id was null or undefined when calling replaceSession.');\n        }\n        const Session = requestParameters.Session;\n        if (Session === null || Session === undefined) {\n            throw new Error('Required parameter Session was null or undefined when calling replaceSession.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_Session>(`${this.configuration.basePath}/v1/sessions/${encodeURIComponent(String(session_id))}`,\n                    Session,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _Session) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new SessionImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a session with its challenge answer\n     * Update a session with its challenge answer\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public updateSessionChallenge(requestParameters: UpdateSessionChallengeRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<SessionChallenge>;\n    public updateSessionChallenge(requestParameters: UpdateSessionChallengeRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<SessionChallenge>>;\n    public updateSessionChallenge(requestParameters: UpdateSessionChallengeRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<SessionChallenge>>;\n    public updateSessionChallenge(requestParameters: UpdateSessionChallengeRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const SessionChallenge = requestParameters.SessionChallenge;\n        if (SessionChallenge === null || SessionChallenge === undefined) {\n            throw new Error('Required parameter SessionChallenge was null or undefined when calling updateSessionChallenge.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_SessionChallenge>(`${this.configuration.basePath}/v1/session_challenges/update_session`,\n                    SessionChallenge,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _SessionChallenge) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new SessionChallengeImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Validate an identity assertion\n     * Validate an identity assertion to asscertain if the request for a token is valid\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public validateIdentityAssertion(requestParameters: ValidateIdentityAssertionRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<IdentityAssertionResponse>;\n    public validateIdentityAssertion(requestParameters: ValidateIdentityAssertionRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<IdentityAssertionResponse>>;\n    public validateIdentityAssertion(requestParameters: ValidateIdentityAssertionRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<IdentityAssertionResponse>>;\n    public validateIdentityAssertion(requestParameters: ValidateIdentityAssertionRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const IdentityAssertion = requestParameters.IdentityAssertion;\n        if (IdentityAssertion === null || IdentityAssertion === undefined) {\n            throw new Error('Required parameter IdentityAssertion was null or undefined when calling validateIdentityAssertion.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_IdentityAssertionResponse>(`${this.configuration.basePath}/v1/authentication_documents_rpc/validate_identity_assertion`,\n                    IdentityAssertion,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _IdentityAssertionResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new IdentityAssertionResponseImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _ListTrustedCertificate, ListTrustedCertificate, ListTrustedCertificateImpl } from '../model/models';\nimport { _ListTrustedCertificateBundle, ListTrustedCertificateBundle, ListTrustedCertificateBundleImpl } from '../model/models';\nimport { _ListTrustedCertificateLabel, ListTrustedCertificateLabel, ListTrustedCertificateLabelImpl } from '../model/models';\nimport { _ListTrustedCertificateOrg, ListTrustedCertificateOrg, ListTrustedCertificateOrgImpl } from '../model/models';\nimport { _TrustedCertificate, TrustedCertificate, TrustedCertificateImpl } from '../model/models';\nimport { _TrustedCertificateBundle, TrustedCertificateBundle, TrustedCertificateBundleImpl } from '../model/models';\nimport { _TrustedCertificateLabel, TrustedCertificateLabel, TrustedCertificateLabelImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    TrustedCertsServiceInterface,\n    CreateBundleRequestParams,\n    CreateLabelRequestParams,\n    CreateTrustedCertRequestParams,\n    DeleteBundleRequestParams,\n    DeleteLabelRequestParams,\n    DeleteTrustedCertRequestParams,\n    GetBundleRequestParams,\n    GetLabelRequestParams,\n    GetTrustedCertRequestParams,\n    ListBundlesRequestParams,\n    ListCertOrgsRequestParams,\n    ListLabelsRequestParams,\n    ListTrustedCertsRequestParams,\n    ReplaceBundleRequestParams,\n    ReplaceTrustedCertRequestParams\n} from './trustedCerts.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class TrustedCertsService implements TrustedCertsServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Creates a TrustedCertificateBundle\n     * Creates a TrustedCertificateBundle \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createBundle(requestParameters: CreateBundleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<TrustedCertificateBundle>;\n    public createBundle(requestParameters: CreateBundleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<TrustedCertificateBundle>>;\n    public createBundle(requestParameters: CreateBundleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<TrustedCertificateBundle>>;\n    public createBundle(requestParameters: CreateBundleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const TrustedCertificateBundle = requestParameters.TrustedCertificateBundle;\n        if (TrustedCertificateBundle === null || TrustedCertificateBundle === undefined) {\n            throw new Error('Required parameter TrustedCertificateBundle was null or undefined when calling createBundle.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_TrustedCertificateBundle>(`${this.configuration.basePath}/v1/trusted_cert_bundles`,\n                    TrustedCertificateBundle,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _TrustedCertificateBundle) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new TrustedCertificateBundleImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Creates a TrustedCertificateLabel\n     * Creates a TrustedCertificateLabel \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createLabel(requestParameters: CreateLabelRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<TrustedCertificateLabel>;\n    public createLabel(requestParameters: CreateLabelRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<TrustedCertificateLabel>>;\n    public createLabel(requestParameters: CreateLabelRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<TrustedCertificateLabel>>;\n    public createLabel(requestParameters: CreateLabelRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const TrustedCertificateLabel = requestParameters.TrustedCertificateLabel;\n        if (TrustedCertificateLabel === null || TrustedCertificateLabel === undefined) {\n            throw new Error('Required parameter TrustedCertificateLabel was null or undefined when calling createLabel.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_TrustedCertificateLabel>(`${this.configuration.basePath}/v1/trusted_cert_labels`,\n                    TrustedCertificateLabel,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _TrustedCertificateLabel) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new TrustedCertificateLabelImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Creates a TrustedCertificate\n     * Creates a TrustedCertificate \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createTrustedCert(requestParameters: CreateTrustedCertRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<TrustedCertificate>;\n    public createTrustedCert(requestParameters: CreateTrustedCertRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<TrustedCertificate>>;\n    public createTrustedCert(requestParameters: CreateTrustedCertRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<TrustedCertificate>>;\n    public createTrustedCert(requestParameters: CreateTrustedCertRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const TrustedCertificate = requestParameters.TrustedCertificate;\n        if (TrustedCertificate === null || TrustedCertificate === undefined) {\n            throw new Error('Required parameter TrustedCertificate was null or undefined when calling createTrustedCert.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_TrustedCertificate>(`${this.configuration.basePath}/v1/trusted_certs`,\n                    TrustedCertificate,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _TrustedCertificate) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new TrustedCertificateImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a TrustedCertificateBundle\n     * Delete a TrustedCertificateBundle\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteBundle(requestParameters: DeleteBundleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteBundle(requestParameters: DeleteBundleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteBundle(requestParameters: DeleteBundleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteBundle(requestParameters: DeleteBundleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const bundle = requestParameters.bundle;\n        if (bundle === null || bundle === undefined) {\n            throw new Error('Required parameter bundle was null or undefined when calling deleteBundle.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/trusted_cert_bundles/${encodeURIComponent(String(bundle))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a TrustedCertificateLabel\n     * Delete a TrustedCertificateLabel\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteLabel(requestParameters: DeleteLabelRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteLabel(requestParameters: DeleteLabelRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteLabel(requestParameters: DeleteLabelRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteLabel(requestParameters: DeleteLabelRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const label = requestParameters.label;\n        if (label === null || label === undefined) {\n            throw new Error('Required parameter label was null or undefined when calling deleteLabel.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/trusted_cert_labels/${encodeURIComponent(String(label))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a TrustedCertificate\n     * Delete a TrustedCertificate\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteTrustedCert(requestParameters: DeleteTrustedCertRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteTrustedCert(requestParameters: DeleteTrustedCertRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteTrustedCert(requestParameters: DeleteTrustedCertRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteTrustedCert(requestParameters: DeleteTrustedCertRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const certificate_id = requestParameters.certificate_id;\n        if (certificate_id === null || certificate_id === undefined) {\n            throw new Error('Required parameter certificate_id was null or undefined when calling deleteTrustedCert.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/trusted_certs/${encodeURIComponent(String(certificate_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get a TrustedCertificateBundle\n     * Get a TrustedCertificateBundle\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getBundle(requestParameters: GetBundleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<TrustedCertificateBundle>;\n    public getBundle(requestParameters: GetBundleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<TrustedCertificateBundle>>;\n    public getBundle(requestParameters: GetBundleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<TrustedCertificateBundle>>;\n    public getBundle(requestParameters: GetBundleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const bundle = requestParameters.bundle;\n        if (bundle === null || bundle === undefined) {\n            throw new Error('Required parameter bundle was null or undefined when calling getBundle.');\n        }\n        const org_id = requestParameters.org_id;\n        const trusted_cert_bundle_etag = requestParameters.trusted_cert_bundle_etag;\n        const get_certs = requestParameters.get_certs;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (trusted_cert_bundle_etag !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>trusted_cert_bundle_etag, 'trusted_cert_bundle_etag');\n        }\n        if (get_certs !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>get_certs, 'get_certs');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_TrustedCertificateBundle>(`${this.configuration.basePath}/v1/trusted_cert_bundles/${encodeURIComponent(String(bundle))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _TrustedCertificateBundle) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new TrustedCertificateBundleImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a TrustedCertificateLabel\n     * Get a TrustedCertificateLabel\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getLabel(requestParameters: GetLabelRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<TrustedCertificateLabel>;\n    public getLabel(requestParameters: GetLabelRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<TrustedCertificateLabel>>;\n    public getLabel(requestParameters: GetLabelRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<TrustedCertificateLabel>>;\n    public getLabel(requestParameters: GetLabelRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const label = requestParameters.label;\n        if (label === null || label === undefined) {\n            throw new Error('Required parameter label was null or undefined when calling getLabel.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_TrustedCertificateLabel>(`${this.configuration.basePath}/v1/trusted_cert_labels/${encodeURIComponent(String(label))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _TrustedCertificateLabel) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new TrustedCertificateLabelImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a TrustedCertificate\n     * Get a TrustedCertificate\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getTrustedCert(requestParameters: GetTrustedCertRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<TrustedCertificate>;\n    public getTrustedCert(requestParameters: GetTrustedCertRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<TrustedCertificate>>;\n    public getTrustedCert(requestParameters: GetTrustedCertRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<TrustedCertificate>>;\n    public getTrustedCert(requestParameters: GetTrustedCertRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const certificate_id = requestParameters.certificate_id;\n        if (certificate_id === null || certificate_id === undefined) {\n            throw new Error('Required parameter certificate_id was null or undefined when calling getTrustedCert.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_TrustedCertificate>(`${this.configuration.basePath}/v1/trusted_certs/${encodeURIComponent(String(certificate_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _TrustedCertificate) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new TrustedCertificateImpl(response)\n            })\n        );\n    }\n\n    /**\n     * list TrustedCertificateBundle\n     * List TrustedCertificateBundle \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listBundles(requestParameters: ListBundlesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListTrustedCertificateBundle>;\n    public listBundles(requestParameters: ListBundlesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListTrustedCertificateBundle>>;\n    public listBundles(requestParameters: ListBundlesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListTrustedCertificateBundle>>;\n    public listBundles(requestParameters: ListBundlesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListTrustedCertificateBundle>(`${this.configuration.basePath}/v1/trusted_cert_bundles`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListTrustedCertificateBundle) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListTrustedCertificateBundleImpl(response)\n            })\n        );\n    }\n\n    /**\n     * list orgs that have available certificates\n     * List orgs that have available trusted certificates \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listCertOrgs(requestParameters: ListCertOrgsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListTrustedCertificateOrg>;\n    public listCertOrgs(requestParameters: ListCertOrgsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListTrustedCertificateOrg>>;\n    public listCertOrgs(requestParameters: ListCertOrgsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListTrustedCertificateOrg>>;\n    public listCertOrgs(requestParameters: ListCertOrgsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListTrustedCertificateOrg>(`${this.configuration.basePath}/v1/trusted_certs/orgs`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListTrustedCertificateOrg) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListTrustedCertificateOrgImpl(response)\n            })\n        );\n    }\n\n    /**\n     * list TrustedCertificateLabel\n     * List TrustedCertificateLabel \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listLabels(requestParameters: ListLabelsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListTrustedCertificateLabel>;\n    public listLabels(requestParameters: ListLabelsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListTrustedCertificateLabel>>;\n    public listLabels(requestParameters: ListLabelsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListTrustedCertificateLabel>>;\n    public listLabels(requestParameters: ListLabelsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const label = requestParameters.label;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (label !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>label, 'label');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListTrustedCertificateLabel>(`${this.configuration.basePath}/v1/trusted_cert_labels`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListTrustedCertificateLabel) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListTrustedCertificateLabelImpl(response)\n            })\n        );\n    }\n\n    /**\n     * list certificates\n     * List certificates \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listTrustedCerts(requestParameters: ListTrustedCertsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListTrustedCertificate>;\n    public listTrustedCerts(requestParameters: ListTrustedCertsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListTrustedCertificate>>;\n    public listTrustedCerts(requestParameters: ListTrustedCertsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListTrustedCertificate>>;\n    public listTrustedCerts(requestParameters: ListTrustedCertsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const org_id = requestParameters.org_id;\n        const trusted_cert_label = requestParameters.trusted_cert_label;\n        const page_at_id = requestParameters.page_at_id;\n        const subject = requestParameters.subject;\n        const subject_search = requestParameters.subject_search;\n        const subject_sha1 = requestParameters.subject_sha1;\n        const subject_sha256 = requestParameters.subject_sha256;\n        const cert_issuer = requestParameters.cert_issuer;\n        const cert_issuer_search = requestParameters.cert_issuer_search;\n        const serial_number = requestParameters.serial_number;\n        const skid = requestParameters.skid;\n        const public_key_sha1 = requestParameters.public_key_sha1;\n        const public_key_sha256 = requestParameters.public_key_sha256;\n        const cert_root = requestParameters.cert_root;\n        const key_usage_extension_search = requestParameters.key_usage_extension_search;\n        const key_usage_crl_sign = requestParameters.key_usage_crl_sign;\n        const key_usage_key_cert_sign = requestParameters.key_usage_key_cert_sign;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (trusted_cert_label !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>trusted_cert_label, 'trusted_cert_label');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (subject !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>subject, 'subject');\n        }\n        if (subject_search !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>subject_search, 'subject_search');\n        }\n        if (subject_sha1 !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>subject_sha1, 'subject_sha1');\n        }\n        if (subject_sha256 !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>subject_sha256, 'subject_sha256');\n        }\n        if (cert_issuer !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>cert_issuer, 'cert_issuer');\n        }\n        if (cert_issuer_search !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>cert_issuer_search, 'cert_issuer_search');\n        }\n        if (serial_number !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>serial_number, 'serial_number');\n        }\n        if (skid !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>skid, 'skid');\n        }\n        if (public_key_sha1 !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>public_key_sha1, 'public_key_sha1');\n        }\n        if (public_key_sha256 !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>public_key_sha256, 'public_key_sha256');\n        }\n        if (cert_root !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>cert_root, 'cert_root');\n        }\n        if (key_usage_extension_search !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>key_usage_extension_search, 'key_usage_extension_search');\n        }\n        if (key_usage_crl_sign !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>key_usage_crl_sign, 'key_usage_crl_sign');\n        }\n        if (key_usage_key_cert_sign !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>key_usage_key_cert_sign, 'key_usage_key_cert_sign');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListTrustedCertificate>(`${this.configuration.basePath}/v1/trusted_certs`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListTrustedCertificate) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListTrustedCertificateImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a TrustedCertificateBundle\n     * Update a TrustedCertificateBundle \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceBundle(requestParameters: ReplaceBundleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<TrustedCertificateBundle>;\n    public replaceBundle(requestParameters: ReplaceBundleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<TrustedCertificateBundle>>;\n    public replaceBundle(requestParameters: ReplaceBundleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<TrustedCertificateBundle>>;\n    public replaceBundle(requestParameters: ReplaceBundleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const bundle = requestParameters.bundle;\n        if (bundle === null || bundle === undefined) {\n            throw new Error('Required parameter bundle was null or undefined when calling replaceBundle.');\n        }\n        const TrustedCertificateBundle = requestParameters.TrustedCertificateBundle;\n        if (TrustedCertificateBundle === null || TrustedCertificateBundle === undefined) {\n            throw new Error('Required parameter TrustedCertificateBundle was null or undefined when calling replaceBundle.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_TrustedCertificateBundle>(`${this.configuration.basePath}/v1/trusted_cert_bundles/${encodeURIComponent(String(bundle))}`,\n                    TrustedCertificateBundle,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _TrustedCertificateBundle) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new TrustedCertificateBundleImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a TrustedCertificate\n     * Update a TrustedCertificate \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceTrustedCert(requestParameters: ReplaceTrustedCertRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<TrustedCertificate>;\n    public replaceTrustedCert(requestParameters: ReplaceTrustedCertRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<TrustedCertificate>>;\n    public replaceTrustedCert(requestParameters: ReplaceTrustedCertRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<TrustedCertificate>>;\n    public replaceTrustedCert(requestParameters: ReplaceTrustedCertRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const certificate_id = requestParameters.certificate_id;\n        if (certificate_id === null || certificate_id === undefined) {\n            throw new Error('Required parameter certificate_id was null or undefined when calling replaceTrustedCert.');\n        }\n        const TrustedCertificate = requestParameters.TrustedCertificate;\n        if (TrustedCertificate === null || TrustedCertificate === undefined) {\n            throw new Error('Required parameter TrustedCertificate was null or undefined when calling replaceTrustedCert.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_TrustedCertificate>(`${this.configuration.basePath}/v1/trusted_certs/${encodeURIComponent(String(certificate_id))}`,\n                    TrustedCertificate,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _TrustedCertificate) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new TrustedCertificateImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _BulkUserMetadata, BulkUserMetadata, BulkUserMetadataImpl } from '../model/models';\nimport { _BulkUserRequestApproval, BulkUserRequestApproval, BulkUserRequestApprovalImpl } from '../model/models';\nimport { _ErrorMessage, ErrorMessage, ErrorMessageImpl } from '../model/models';\nimport { _HostPermissions, HostPermissions, HostPermissionsImpl } from '../model/models';\nimport { _ListAccessRequestsResponse, ListAccessRequestsResponse, ListAccessRequestsResponseImpl } from '../model/models';\nimport { _ListCombinedUserDetailsResponse, ListCombinedUserDetailsResponse, ListCombinedUserDetailsResponseImpl } from '../model/models';\nimport { _ListGuidMetadataResponse, ListGuidMetadataResponse, ListGuidMetadataResponseImpl } from '../model/models';\nimport { _ListMFAChallengeMethods, ListMFAChallengeMethods, ListMFAChallengeMethodsImpl } from '../model/models';\nimport { _ListOrgUpstreamUserIdentitiesResponse, ListOrgUpstreamUserIdentitiesResponse, ListOrgUpstreamUserIdentitiesResponseImpl } from '../model/models';\nimport { _ListOrgsResponse, ListOrgsResponse, ListOrgsResponseImpl } from '../model/models';\nimport { _ListServiceAccountResponse, ListServiceAccountResponse, ListServiceAccountResponseImpl } from '../model/models';\nimport { _ListSupportRequestAcknowledgementsResponse, ListSupportRequestAcknowledgementsResponse, ListSupportRequestAcknowledgementsResponseImpl } from '../model/models';\nimport { _ListSupportRequestResponse, ListSupportRequestResponse, ListSupportRequestResponseImpl } from '../model/models';\nimport { _ListUpstreamUserIdentitiesResponse, ListUpstreamUserIdentitiesResponse, ListUpstreamUserIdentitiesResponseImpl } from '../model/models';\nimport { _ListUserApplicationAccessInfoResponse, ListUserApplicationAccessInfoResponse, ListUserApplicationAccessInfoResponseImpl } from '../model/models';\nimport { _ListUserDesktopAccessInfoResponse, ListUserDesktopAccessInfoResponse, ListUserDesktopAccessInfoResponseImpl } from '../model/models';\nimport { _ListUserFileShareAccessInfoResponse, ListUserFileShareAccessInfoResponse, ListUserFileShareAccessInfoResponseImpl } from '../model/models';\nimport { _ListUserGuidsResponse, ListUserGuidsResponse, ListUserGuidsResponseImpl } from '../model/models';\nimport { _ListUserLauncherAccessInfoResponse, ListUserLauncherAccessInfoResponse, ListUserLauncherAccessInfoResponseImpl } from '../model/models';\nimport { _ListUserMetadataResponse, ListUserMetadataResponse, ListUserMetadataResponseImpl } from '../model/models';\nimport { _ListUserRequestInfoResponse, ListUserRequestInfoResponse, ListUserRequestInfoResponseImpl } from '../model/models';\nimport { _ListUserResourceAccessInfoResponse, ListUserResourceAccessInfoResponse, ListUserResourceAccessInfoResponseImpl } from '../model/models';\nimport { _ListUserRolesForAnOrg, ListUserRolesForAnOrg, ListUserRolesForAnOrgImpl } from '../model/models';\nimport { _ListUserSSHAccessInfoResponse, ListUserSSHAccessInfoResponse, ListUserSSHAccessInfoResponseImpl } from '../model/models';\nimport { _ListUsersResponse, ListUsersResponse, ListUsersResponseImpl } from '../model/models';\nimport { _MFAChallengeMethod, MFAChallengeMethod, MFAChallengeMethodImpl } from '../model/models';\nimport { _OrgUpstreamUserIdentity, OrgUpstreamUserIdentity, OrgUpstreamUserIdentityImpl } from '../model/models';\nimport { _RenderedResourcePermissions, RenderedResourcePermissions, RenderedResourcePermissionsImpl } from '../model/models';\nimport { _ReplaceUserRoleRequest, ReplaceUserRoleRequest, ReplaceUserRoleRequestImpl } from '../model/models';\nimport { _ResetMFAChallengeMethod, ResetMFAChallengeMethod, ResetMFAChallengeMethodImpl } from '../model/models';\nimport { _ResetUserIdentityRequest, ResetUserIdentityRequest, ResetUserIdentityRequestImpl } from '../model/models';\nimport { _ResourceTypeEnum, ResourceTypeEnum, ResourceTypeEnumImpl } from '../model/models';\nimport { _ServiceAccount, ServiceAccount, ServiceAccountImpl } from '../model/models';\nimport { _SupportRequest, SupportRequest, SupportRequestImpl } from '../model/models';\nimport { _SupportRequestAcknowledgement, SupportRequestAcknowledgement, SupportRequestAcknowledgementImpl } from '../model/models';\nimport { _SupportRequestMessage, SupportRequestMessage, SupportRequestMessageImpl } from '../model/models';\nimport { _UpstreamUserIdentity, UpstreamUserIdentity, UpstreamUserIdentityImpl } from '../model/models';\nimport { _User, User, UserImpl } from '../model/models';\nimport { _UserAccessInfo, UserAccessInfo, UserAccessInfoImpl } from '../model/models';\nimport { _UserIdentityUpdate, UserIdentityUpdate, UserIdentityUpdateImpl } from '../model/models';\nimport { _UserMetadata, UserMetadata, UserMetadataImpl } from '../model/models';\nimport { _UserRequestInfo, UserRequestInfo, UserRequestInfoImpl } from '../model/models';\nimport { _UserStatusEnum, UserStatusEnum, UserStatusEnumImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    UsersServiceInterface,\n    BulkApproveRequestsRequestParams,\n    BulkUpdateMetadataRequestParams,\n    CreateChallengeMethodRequestParams,\n    CreateOrgUpstreamUserIdentityRequestParams,\n    CreateServiceAccountRequestParams,\n    CreateSupportRequestRequestParams,\n    CreateSupportRequestAcknowledgementRequestParams,\n    CreateSupportRequestMessageRequestParams,\n    CreateUpstreamUserIdentityRequestParams,\n    CreateUserRequestParams,\n    CreateUserIdentityUpdateRequestParams,\n    CreateUserMetadataRequestParams,\n    CreateUserRequestRequestParams,\n    DeleteChallengeMethodRequestParams,\n    DeleteOrgUpstreamUserIdentityRequestParams,\n    DeleteServiceAccountRequestParams,\n    DeleteSupportRequestRequestParams,\n    DeleteSupportRequestAcknowledgementRequestParams,\n    DeleteUpstreamUserIdentityRequestParams,\n    DeleteUserRequestParams,\n    DeleteUserMetadataRequestParams,\n    DeleteUserRequestRequestParams,\n    GetChallengeMethodRequestParams,\n    GetOrgUpstreamUserIdentityRequestParams,\n    GetServiceAccountRequestParams,\n    GetSupportRequestRequestParams,\n    GetSupportRequestAcknowledgementRequestParams,\n    GetUpstreamUserIdentityRequestParams,\n    GetUserRequestParams,\n    GetUserMetadataRequestParams,\n    GetUserRequestRequestParams,\n    ListAccessRequestsRequestParams,\n    ListAllResourcePermissionsRequestParams,\n    ListAllUserOrgsRequestParams,\n    ListAllUserRolesRequestParams,\n    ListChallengeMethodsRequestParams,\n    ListCombinedUserDetailsRequestParams,\n    ListDesktopAccessInfoRequestParams,\n    ListOrgUpstreamUserIdentityRequestParams,\n    ListOrgUserRolesRequestParams,\n    ListServiceAccountsRequestParams,\n    ListSshAccessInfoRequestParams,\n    ListSupportRequestAcknowledgementsRequestParams,\n    ListSupportRequestsRequestParams,\n    ListUpstreamUserIdentitiesRequestParams,\n    ListUserAccessInfoRequestParams,\n    ListUserApplicationAccessInfoRequestParams,\n    ListUserFileShareAccessInfoRequestParams,\n    ListUserGuidMappingRequestParams,\n    ListUserGuidsRequestParams,\n    ListUserLauncherAccessInfoRequestParams,\n    ListUserMetadataRequestParams,\n    ListUserPermissionsRequestParams,\n    ListUserRequestsRequestParams,\n    ListUserResourceAccessInfoRequestParams,\n    ListUsersRequestParams,\n    ReplaceChallengeMethodRequestParams,\n    ReplaceOrgUpstreamUserIdentityRequestParams,\n    ReplaceServiceAccountRequestParams,\n    ReplaceUpstreamUserIdentityRequestParams,\n    ReplaceUserRequestParams,\n    ReplaceUserMetadataRequestParams,\n    ReplaceUserRequestRequestParams,\n    ReplaceUserRoleRequestParams,\n    ResetUserIdentityRequestParams,\n    ResetUserMfaChallengeMethodsRequestParams,\n    UpdateOrgUpstreamUserIdentityRequestParams,\n    UpdateSupportRequestRequestParams,\n    UpdateUserRequestRequestParams\n} from './users.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class UsersService implements UsersServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * Approve a list of requests on behalf of users\n     * Approve a list of requests on behalf of users, optionally modifying a user\\&#39;s status or resetting their permissions. Note that this may also be used to decline a request. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public bulkApproveRequests(requestParameters: BulkApproveRequestsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<BulkUserRequestApproval>;\n    public bulkApproveRequests(requestParameters: BulkApproveRequestsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<BulkUserRequestApproval>>;\n    public bulkApproveRequests(requestParameters: BulkApproveRequestsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<BulkUserRequestApproval>>;\n    public bulkApproveRequests(requestParameters: BulkApproveRequestsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const BulkUserRequestApproval = requestParameters.BulkUserRequestApproval;\n        if (BulkUserRequestApproval === null || BulkUserRequestApproval === undefined) {\n            throw new Error('Required parameter BulkUserRequestApproval was null or undefined when calling bulkApproveRequests.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_BulkUserRequestApproval>(`${this.configuration.basePath}/v1/user_requests/bulk_approve`,\n                    BulkUserRequestApproval,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _BulkUserRequestApproval) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new BulkUserRequestApprovalImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a group of user\\&#39;s metadata for the specified org\n     * Update a group of user\\&#39;s metadata for the specified org\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public bulkUpdateMetadata(requestParameters: BulkUpdateMetadataRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public bulkUpdateMetadata(requestParameters: BulkUpdateMetadataRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public bulkUpdateMetadata(requestParameters: BulkUpdateMetadataRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public bulkUpdateMetadata(requestParameters: BulkUpdateMetadataRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const BulkUserMetadata = requestParameters.BulkUserMetadata;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<any>(`${this.configuration.basePath}/v1/user_metadata_rpc/bulk_update`,\n                    BulkUserMetadata,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Create a multi-factor authentication method\n     * Create a multi-factor authentication method\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createChallengeMethod(requestParameters: CreateChallengeMethodRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<MFAChallengeMethod>;\n    public createChallengeMethod(requestParameters: CreateChallengeMethodRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<MFAChallengeMethod>>;\n    public createChallengeMethod(requestParameters: CreateChallengeMethodRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<MFAChallengeMethod>>;\n    public createChallengeMethod(requestParameters: CreateChallengeMethodRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling createChallengeMethod.');\n        }\n        const MFAChallengeMethod = requestParameters.MFAChallengeMethod;\n        if (MFAChallengeMethod === null || MFAChallengeMethod === undefined) {\n            throw new Error('Required parameter MFAChallengeMethod was null or undefined when calling createChallengeMethod.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_MFAChallengeMethod>(`${this.configuration.basePath}/users/${encodeURIComponent(String(user_id))}/mfa_challenge_methods`,\n                    MFAChallengeMethod,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _MFAChallengeMethod) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new MFAChallengeMethodImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create an org upstream user identity\n     * Create an org upstream user identity\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createOrgUpstreamUserIdentity(requestParameters: CreateOrgUpstreamUserIdentityRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<OrgUpstreamUserIdentity>;\n    public createOrgUpstreamUserIdentity(requestParameters: CreateOrgUpstreamUserIdentityRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<OrgUpstreamUserIdentity>>;\n    public createOrgUpstreamUserIdentity(requestParameters: CreateOrgUpstreamUserIdentityRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<OrgUpstreamUserIdentity>>;\n    public createOrgUpstreamUserIdentity(requestParameters: CreateOrgUpstreamUserIdentityRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const OrgUpstreamUserIdentity = requestParameters.OrgUpstreamUserIdentity;\n        if (OrgUpstreamUserIdentity === null || OrgUpstreamUserIdentity === undefined) {\n            throw new Error('Required parameter OrgUpstreamUserIdentity was null or undefined when calling createOrgUpstreamUserIdentity.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_OrgUpstreamUserIdentity>(`${this.configuration.basePath}/v1/org_upstream_user_identities`,\n                    OrgUpstreamUserIdentity,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _OrgUpstreamUserIdentity) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new OrgUpstreamUserIdentityImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a service account\n     * Create a service account\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createServiceAccount(requestParameters: CreateServiceAccountRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ServiceAccount>;\n    public createServiceAccount(requestParameters: CreateServiceAccountRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ServiceAccount>>;\n    public createServiceAccount(requestParameters: CreateServiceAccountRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ServiceAccount>>;\n    public createServiceAccount(requestParameters: CreateServiceAccountRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const ServiceAccount = requestParameters.ServiceAccount;\n        if (ServiceAccount === null || ServiceAccount === undefined) {\n            throw new Error('Required parameter ServiceAccount was null or undefined when calling createServiceAccount.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_ServiceAccount>(`${this.configuration.basePath}/v1/service_accounts`,\n                    ServiceAccount,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ServiceAccount) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ServiceAccountImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a support request\n     * Create a support request\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createSupportRequest(requestParameters: CreateSupportRequestRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<SupportRequest>;\n    public createSupportRequest(requestParameters: CreateSupportRequestRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<SupportRequest>>;\n    public createSupportRequest(requestParameters: CreateSupportRequestRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<SupportRequest>>;\n    public createSupportRequest(requestParameters: CreateSupportRequestRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const SupportRequest = requestParameters.SupportRequest;\n        if (SupportRequest === null || SupportRequest === undefined) {\n            throw new Error('Required parameter SupportRequest was null or undefined when calling createSupportRequest.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_SupportRequest>(`${this.configuration.basePath}/v1/support_requests`,\n                    SupportRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _SupportRequest) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new SupportRequestImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a support request acknowledgement\n     * Create a support request acknowledgement\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createSupportRequestAcknowledgement(requestParameters: CreateSupportRequestAcknowledgementRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<SupportRequestAcknowledgement>;\n    public createSupportRequestAcknowledgement(requestParameters: CreateSupportRequestAcknowledgementRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<SupportRequestAcknowledgement>>;\n    public createSupportRequestAcknowledgement(requestParameters: CreateSupportRequestAcknowledgementRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<SupportRequestAcknowledgement>>;\n    public createSupportRequestAcknowledgement(requestParameters: CreateSupportRequestAcknowledgementRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const SupportRequestAcknowledgement = requestParameters.SupportRequestAcknowledgement;\n        if (SupportRequestAcknowledgement === null || SupportRequestAcknowledgement === undefined) {\n            throw new Error('Required parameter SupportRequestAcknowledgement was null or undefined when calling createSupportRequestAcknowledgement.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_SupportRequestAcknowledgement>(`${this.configuration.basePath}/v1/support_requests/acknowledgements`,\n                    SupportRequestAcknowledgement,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _SupportRequestAcknowledgement) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new SupportRequestAcknowledgementImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create support requests message\n     * Creates support requests message by a supporting user so that they can request access to organizations they wish to support. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createSupportRequestMessage(requestParameters: CreateSupportRequestMessageRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<any>;\n    public createSupportRequestMessage(requestParameters: CreateSupportRequestMessageRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<any>>;\n    public createSupportRequestMessage(requestParameters: CreateSupportRequestMessageRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<any>>;\n    public createSupportRequestMessage(requestParameters: CreateSupportRequestMessageRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const SupportRequestMessage = requestParameters.SupportRequestMessage;\n        if (SupportRequestMessage === null || SupportRequestMessage === undefined) {\n            throw new Error('Required parameter SupportRequestMessage was null or undefined when calling createSupportRequestMessage.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<any>(`${this.configuration.basePath}/v1/support_requests/push`,\n                    SupportRequestMessage,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Create an upstream user identity\n     * Create an upstream user identity\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createUpstreamUserIdentity(requestParameters: CreateUpstreamUserIdentityRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UpstreamUserIdentity>;\n    public createUpstreamUserIdentity(requestParameters: CreateUpstreamUserIdentityRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UpstreamUserIdentity>>;\n    public createUpstreamUserIdentity(requestParameters: CreateUpstreamUserIdentityRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UpstreamUserIdentity>>;\n    public createUpstreamUserIdentity(requestParameters: CreateUpstreamUserIdentityRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling createUpstreamUserIdentity.');\n        }\n        const UpstreamUserIdentity = requestParameters.UpstreamUserIdentity;\n        if (UpstreamUserIdentity === null || UpstreamUserIdentity === undefined) {\n            throw new Error('Required parameter UpstreamUserIdentity was null or undefined when calling createUpstreamUserIdentity.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_UpstreamUserIdentity>(`${this.configuration.basePath}/users/${encodeURIComponent(String(user_id))}/upstream_user_identities`,\n                    UpstreamUserIdentity,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UpstreamUserIdentity) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UpstreamUserIdentityImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a user\n     * Create a user\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createUser(requestParameters: CreateUserRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<User>;\n    public createUser(requestParameters: CreateUserRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<User>>;\n    public createUser(requestParameters: CreateUserRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<User>>;\n    public createUser(requestParameters: CreateUserRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const User = requestParameters.User;\n        if (User === null || User === undefined) {\n            throw new Error('Required parameter User was null or undefined when calling createUser.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_User>(`${this.configuration.basePath}/users`,\n                    User,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _User) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UserImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a user\\&#39;s core identity information.\n     * Update a user\\&#39;s core identity information.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createUserIdentityUpdate(requestParameters: CreateUserIdentityUpdateRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UserIdentityUpdate>;\n    public createUserIdentityUpdate(requestParameters: CreateUserIdentityUpdateRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UserIdentityUpdate>>;\n    public createUserIdentityUpdate(requestParameters: CreateUserIdentityUpdateRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UserIdentityUpdate>>;\n    public createUserIdentityUpdate(requestParameters: CreateUserIdentityUpdateRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling createUserIdentityUpdate.');\n        }\n        const UserIdentityUpdate = requestParameters.UserIdentityUpdate;\n        if (UserIdentityUpdate === null || UserIdentityUpdate === undefined) {\n            throw new Error('Required parameter UserIdentityUpdate was null or undefined when calling createUserIdentityUpdate.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_UserIdentityUpdate>(`${this.configuration.basePath}/users/${encodeURIComponent(String(user_id))}/user_identity_updates`,\n                    UserIdentityUpdate,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UserIdentityUpdate) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UserIdentityUpdateImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a metadata entry for the user\n     * Create a metadata entry for the user\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createUserMetadata(requestParameters: CreateUserMetadataRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UserMetadata>;\n    public createUserMetadata(requestParameters: CreateUserMetadataRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UserMetadata>>;\n    public createUserMetadata(requestParameters: CreateUserMetadataRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UserMetadata>>;\n    public createUserMetadata(requestParameters: CreateUserMetadataRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const UserMetadata = requestParameters.UserMetadata;\n        if (UserMetadata === null || UserMetadata === undefined) {\n            throw new Error('Required parameter UserMetadata was null or undefined when calling createUserMetadata.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_UserMetadata>(`${this.configuration.basePath}/v1/user_metadata`,\n                    UserMetadata,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UserMetadata) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UserMetadataImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create a request on behalf of the user\n     * Create a request on behalf of the user\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createUserRequest(requestParameters: CreateUserRequestRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UserRequestInfo>;\n    public createUserRequest(requestParameters: CreateUserRequestRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UserRequestInfo>>;\n    public createUserRequest(requestParameters: CreateUserRequestRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UserRequestInfo>>;\n    public createUserRequest(requestParameters: CreateUserRequestRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const UserRequestInfo = requestParameters.UserRequestInfo;\n        if (UserRequestInfo === null || UserRequestInfo === undefined) {\n            throw new Error('Required parameter UserRequestInfo was null or undefined when calling createUserRequest.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_UserRequestInfo>(`${this.configuration.basePath}/v1/user_requests`,\n                    UserRequestInfo,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UserRequestInfo) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UserRequestInfoImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Delete a user\\&#39;s multi-factor authentication challenge method\n     * Delete a user\\&#39;s multi-factor authentication challenge method\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteChallengeMethod(requestParameters: DeleteChallengeMethodRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteChallengeMethod(requestParameters: DeleteChallengeMethodRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteChallengeMethod(requestParameters: DeleteChallengeMethodRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteChallengeMethod(requestParameters: DeleteChallengeMethodRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling deleteChallengeMethod.');\n        }\n        const challenge_method_id = requestParameters.challenge_method_id;\n        if (challenge_method_id === null || challenge_method_id === undefined) {\n            throw new Error('Required parameter challenge_method_id was null or undefined when calling deleteChallengeMethod.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/users/${encodeURIComponent(String(user_id))}/mfa_challenge_methods/${encodeURIComponent(String(challenge_method_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete an org upstream user identity\n     * Delete an org upstream user identity\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteOrgUpstreamUserIdentity(requestParameters: DeleteOrgUpstreamUserIdentityRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteOrgUpstreamUserIdentity(requestParameters: DeleteOrgUpstreamUserIdentityRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteOrgUpstreamUserIdentity(requestParameters: DeleteOrgUpstreamUserIdentityRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteOrgUpstreamUserIdentity(requestParameters: DeleteOrgUpstreamUserIdentityRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const org_upstream_user_identity_id = requestParameters.org_upstream_user_identity_id;\n        if (org_upstream_user_identity_id === null || org_upstream_user_identity_id === undefined) {\n            throw new Error('Required parameter org_upstream_user_identity_id was null or undefined when calling deleteOrgUpstreamUserIdentity.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/org_upstream_user_identities/${encodeURIComponent(String(org_upstream_user_identity_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a service account\n     * Delete a service account\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteServiceAccount(requestParameters: DeleteServiceAccountRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteServiceAccount(requestParameters: DeleteServiceAccountRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteServiceAccount(requestParameters: DeleteServiceAccountRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteServiceAccount(requestParameters: DeleteServiceAccountRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const service_account_id = requestParameters.service_account_id;\n        if (service_account_id === null || service_account_id === undefined) {\n            throw new Error('Required parameter service_account_id was null or undefined when calling deleteServiceAccount.');\n        }\n        const org_id = requestParameters.org_id;\n        const protected_by_id = requestParameters.protected_by_id;\n        const protected_by_type = requestParameters.protected_by_type;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (protected_by_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>protected_by_id, 'protected_by_id');\n        }\n        if (protected_by_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>protected_by_type, 'protected_by_type');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/service_accounts/${encodeURIComponent(String(service_account_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a support request\n     * Delete a support request\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteSupportRequest(requestParameters: DeleteSupportRequestRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteSupportRequest(requestParameters: DeleteSupportRequestRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteSupportRequest(requestParameters: DeleteSupportRequestRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteSupportRequest(requestParameters: DeleteSupportRequestRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const support_request_id = requestParameters.support_request_id;\n        if (support_request_id === null || support_request_id === undefined) {\n            throw new Error('Required parameter support_request_id was null or undefined when calling deleteSupportRequest.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/support_requests/${encodeURIComponent(String(support_request_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete a support request acknowledgement\n     * Delete a support request acknowledgement\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteSupportRequestAcknowledgement(requestParameters: DeleteSupportRequestAcknowledgementRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteSupportRequestAcknowledgement(requestParameters: DeleteSupportRequestAcknowledgementRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteSupportRequestAcknowledgement(requestParameters: DeleteSupportRequestAcknowledgementRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteSupportRequestAcknowledgement(requestParameters: DeleteSupportRequestAcknowledgementRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const support_request_acknowledgement_id = requestParameters.support_request_acknowledgement_id;\n        if (support_request_acknowledgement_id === null || support_request_acknowledgement_id === undefined) {\n            throw new Error('Required parameter support_request_acknowledgement_id was null or undefined when calling deleteSupportRequestAcknowledgement.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/support_requests/acknowledgements/${encodeURIComponent(String(support_request_acknowledgement_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete an upstream user identity\n     * Delete an upstream user identity\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteUpstreamUserIdentity(requestParameters: DeleteUpstreamUserIdentityRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteUpstreamUserIdentity(requestParameters: DeleteUpstreamUserIdentityRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteUpstreamUserIdentity(requestParameters: DeleteUpstreamUserIdentityRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteUpstreamUserIdentity(requestParameters: DeleteUpstreamUserIdentityRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling deleteUpstreamUserIdentity.');\n        }\n        const upstream_user_identity_id = requestParameters.upstream_user_identity_id;\n        if (upstream_user_identity_id === null || upstream_user_identity_id === undefined) {\n            throw new Error('Required parameter upstream_user_identity_id was null or undefined when calling deleteUpstreamUserIdentity.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/users/${encodeURIComponent(String(user_id))}/upstream_user_identities/${encodeURIComponent(String(upstream_user_identity_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Remove a user from an organisation\n     * Remove a user from an organisation\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteUser(requestParameters: DeleteUserRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteUser(requestParameters: DeleteUserRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteUser(requestParameters: DeleteUserRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteUser(requestParameters: DeleteUserRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling deleteUser.');\n        }\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling deleteUser.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/orgs/${encodeURIComponent(String(org_id))}/users/${encodeURIComponent(String(user_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete an user metadata entry\n     * Delete an user metadata entry\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteUserMetadata(requestParameters: DeleteUserMetadataRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteUserMetadata(requestParameters: DeleteUserMetadataRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteUserMetadata(requestParameters: DeleteUserMetadataRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteUserMetadata(requestParameters: DeleteUserMetadataRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const metadata_id = requestParameters.metadata_id;\n        if (metadata_id === null || metadata_id === undefined) {\n            throw new Error('Required parameter metadata_id was null or undefined when calling deleteUserMetadata.');\n        }\n        const user_id = requestParameters.user_id;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/user_metadata/${encodeURIComponent(String(metadata_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Delete an user request\n     * Delete an user request\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public deleteUserRequest(requestParameters: DeleteUserRequestRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public deleteUserRequest(requestParameters: DeleteUserRequestRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public deleteUserRequest(requestParameters: DeleteUserRequestRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public deleteUserRequest(requestParameters: DeleteUserRequestRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const user_request_id = requestParameters.user_request_id;\n        if (user_request_id === null || user_request_id === undefined) {\n            throw new Error('Required parameter user_request_id was null or undefined when calling deleteUserRequest.');\n        }\n        const user_id = requestParameters.user_id;\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.delete<any>(`${this.configuration.basePath}/v1/user_requests/${encodeURIComponent(String(user_request_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get a single challenge method for the given user\n     * Get a single challenge method for the given user\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getChallengeMethod(requestParameters: GetChallengeMethodRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<MFAChallengeMethod>;\n    public getChallengeMethod(requestParameters: GetChallengeMethodRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<MFAChallengeMethod>>;\n    public getChallengeMethod(requestParameters: GetChallengeMethodRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<MFAChallengeMethod>>;\n    public getChallengeMethod(requestParameters: GetChallengeMethodRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling getChallengeMethod.');\n        }\n        const challenge_method_id = requestParameters.challenge_method_id;\n        if (challenge_method_id === null || challenge_method_id === undefined) {\n            throw new Error('Required parameter challenge_method_id was null or undefined when calling getChallengeMethod.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_MFAChallengeMethod>(`${this.configuration.basePath}/users/${encodeURIComponent(String(user_id))}/mfa_challenge_methods/${encodeURIComponent(String(challenge_method_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _MFAChallengeMethod) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new MFAChallengeMethodImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a single org upstream user identity\n     * Get a single org upstream user identity\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getOrgUpstreamUserIdentity(requestParameters: GetOrgUpstreamUserIdentityRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<OrgUpstreamUserIdentity>;\n    public getOrgUpstreamUserIdentity(requestParameters: GetOrgUpstreamUserIdentityRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<OrgUpstreamUserIdentity>>;\n    public getOrgUpstreamUserIdentity(requestParameters: GetOrgUpstreamUserIdentityRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<OrgUpstreamUserIdentity>>;\n    public getOrgUpstreamUserIdentity(requestParameters: GetOrgUpstreamUserIdentityRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_upstream_user_identity_id = requestParameters.org_upstream_user_identity_id;\n        if (org_upstream_user_identity_id === null || org_upstream_user_identity_id === undefined) {\n            throw new Error('Required parameter org_upstream_user_identity_id was null or undefined when calling getOrgUpstreamUserIdentity.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_OrgUpstreamUserIdentity>(`${this.configuration.basePath}/v1/org_upstream_user_identities/${encodeURIComponent(String(org_upstream_user_identity_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _OrgUpstreamUserIdentity) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new OrgUpstreamUserIdentityImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a service account\n     * Get a service account\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getServiceAccount(requestParameters: GetServiceAccountRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ServiceAccount>;\n    public getServiceAccount(requestParameters: GetServiceAccountRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ServiceAccount>>;\n    public getServiceAccount(requestParameters: GetServiceAccountRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ServiceAccount>>;\n    public getServiceAccount(requestParameters: GetServiceAccountRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const service_account_id = requestParameters.service_account_id;\n        if (service_account_id === null || service_account_id === undefined) {\n            throw new Error('Required parameter service_account_id was null or undefined when calling getServiceAccount.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ServiceAccount>(`${this.configuration.basePath}/v1/service_accounts/${encodeURIComponent(String(service_account_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ServiceAccount) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ServiceAccountImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a support request\n     * Get a support request\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getSupportRequest(requestParameters: GetSupportRequestRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<SupportRequest>;\n    public getSupportRequest(requestParameters: GetSupportRequestRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<SupportRequest>>;\n    public getSupportRequest(requestParameters: GetSupportRequestRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<SupportRequest>>;\n    public getSupportRequest(requestParameters: GetSupportRequestRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const support_request_id = requestParameters.support_request_id;\n        if (support_request_id === null || support_request_id === undefined) {\n            throw new Error('Required parameter support_request_id was null or undefined when calling getSupportRequest.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_SupportRequest>(`${this.configuration.basePath}/v1/support_requests/${encodeURIComponent(String(support_request_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _SupportRequest) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new SupportRequestImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a support request acknowledgement\n     * Get a support request acknowledgement\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getSupportRequestAcknowledgement(requestParameters: GetSupportRequestAcknowledgementRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<SupportRequestAcknowledgement>;\n    public getSupportRequestAcknowledgement(requestParameters: GetSupportRequestAcknowledgementRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<SupportRequestAcknowledgement>>;\n    public getSupportRequestAcknowledgement(requestParameters: GetSupportRequestAcknowledgementRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<SupportRequestAcknowledgement>>;\n    public getSupportRequestAcknowledgement(requestParameters: GetSupportRequestAcknowledgementRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const support_request_acknowledgement_id = requestParameters.support_request_acknowledgement_id;\n        if (support_request_acknowledgement_id === null || support_request_acknowledgement_id === undefined) {\n            throw new Error('Required parameter support_request_acknowledgement_id was null or undefined when calling getSupportRequestAcknowledgement.');\n        }\n        const user_id = requestParameters.user_id;\n        const org_id = requestParameters.org_id;\n        const support_request_id = requestParameters.support_request_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (support_request_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>support_request_id, 'support_request_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_SupportRequestAcknowledgement>(`${this.configuration.basePath}/v1/support_requests/acknowledgements/${encodeURIComponent(String(support_request_acknowledgement_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _SupportRequestAcknowledgement) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new SupportRequestAcknowledgementImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a single upstream user identity\n     * Get a single upstream user identity\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getUpstreamUserIdentity(requestParameters: GetUpstreamUserIdentityRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UpstreamUserIdentity>;\n    public getUpstreamUserIdentity(requestParameters: GetUpstreamUserIdentityRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UpstreamUserIdentity>>;\n    public getUpstreamUserIdentity(requestParameters: GetUpstreamUserIdentityRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UpstreamUserIdentity>>;\n    public getUpstreamUserIdentity(requestParameters: GetUpstreamUserIdentityRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling getUpstreamUserIdentity.');\n        }\n        const upstream_user_identity_id = requestParameters.upstream_user_identity_id;\n        if (upstream_user_identity_id === null || upstream_user_identity_id === undefined) {\n            throw new Error('Required parameter upstream_user_identity_id was null or undefined when calling getUpstreamUserIdentity.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_UpstreamUserIdentity>(`${this.configuration.basePath}/users/${encodeURIComponent(String(user_id))}/upstream_user_identities/${encodeURIComponent(String(upstream_user_identity_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UpstreamUserIdentity) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UpstreamUserIdentityImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a single user\n     * Get a single user\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getUser(requestParameters: GetUserRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<User>;\n    public getUser(requestParameters: GetUserRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<User>>;\n    public getUser(requestParameters: GetUserRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<User>>;\n    public getUser(requestParameters: GetUserRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling getUser.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_User>(`${this.configuration.basePath}/users/${encodeURIComponent(String(user_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _User) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UserImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a single user metadata entry\n     * Get a single user metadata entry\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getUserMetadata(requestParameters: GetUserMetadataRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UserMetadata>;\n    public getUserMetadata(requestParameters: GetUserMetadataRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UserMetadata>>;\n    public getUserMetadata(requestParameters: GetUserMetadataRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UserMetadata>>;\n    public getUserMetadata(requestParameters: GetUserMetadataRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const metadata_id = requestParameters.metadata_id;\n        if (metadata_id === null || metadata_id === undefined) {\n            throw new Error('Required parameter metadata_id was null or undefined when calling getUserMetadata.');\n        }\n        const org_id = requestParameters.org_id;\n        const user_id = requestParameters.user_id;\n        const recursive = requestParameters.recursive;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (recursive !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>recursive, 'recursive');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_UserMetadata>(`${this.configuration.basePath}/v1/user_metadata/${encodeURIComponent(String(metadata_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UserMetadata) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UserMetadataImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a single user request\n     * Get a single user request\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public getUserRequest(requestParameters: GetUserRequestRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UserRequestInfo>;\n    public getUserRequest(requestParameters: GetUserRequestRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UserRequestInfo>>;\n    public getUserRequest(requestParameters: GetUserRequestRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UserRequestInfo>>;\n    public getUserRequest(requestParameters: GetUserRequestRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_request_id = requestParameters.user_request_id;\n        if (user_request_id === null || user_request_id === undefined) {\n            throw new Error('Required parameter user_request_id was null or undefined when calling getUserRequest.');\n        }\n        const org_id = requestParameters.org_id;\n        const user_id = requestParameters.user_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_UserRequestInfo>(`${this.configuration.basePath}/v1/user_requests/${encodeURIComponent(String(user_request_id))}`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UserRequestInfo) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UserRequestInfoImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a list of access requests\n     * Get a list of access requests\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listAccessRequests(requestParameters: ListAccessRequestsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListAccessRequestsResponse>;\n    public listAccessRequests(requestParameters: ListAccessRequestsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListAccessRequestsResponse>>;\n    public listAccessRequests(requestParameters: ListAccessRequestsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListAccessRequestsResponse>>;\n    public listAccessRequests(requestParameters: ListAccessRequestsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling listAccessRequests.');\n        }\n        const limit = requestParameters.limit;\n        const user_id = requestParameters.user_id;\n        const request_state = requestParameters.request_state;\n        const request_type = requestParameters.request_type;\n        const email = requestParameters.email;\n        const search_direction = requestParameters.search_direction;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (request_state !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>request_state, 'request_state');\n        }\n        if (request_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>request_type, 'request_type');\n        }\n        if (email !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>email, 'email');\n        }\n        if (search_direction !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>search_direction, 'search_direction');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListAccessRequestsResponse>(`${this.configuration.basePath}/v1/access_requests`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListAccessRequestsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListAccessRequestsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Return all per-resource permissions for a user\n     * Retrieves the per-resource permissions for a user granted for them by the given organisation. These permissions are recursively inherted from any groups to which the user belongs. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listAllResourcePermissions(requestParameters: ListAllResourcePermissionsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<RenderedResourcePermissions>;\n    public listAllResourcePermissions(requestParameters: ListAllResourcePermissionsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<RenderedResourcePermissions>>;\n    public listAllResourcePermissions(requestParameters: ListAllResourcePermissionsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<RenderedResourcePermissions>>;\n    public listAllResourcePermissions(requestParameters: ListAllResourcePermissionsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling listAllResourcePermissions.');\n        }\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling listAllResourcePermissions.');\n        }\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_RenderedResourcePermissions>(`${this.configuration.basePath}/users/${encodeURIComponent(String(user_id))}/render_resource_permissions`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _RenderedResourcePermissions) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new RenderedResourcePermissionsImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Return all organisations a user has been assigned to\n     * Return all organisations a user has been assigned to which share the given issuer, or which have as an ancestor the given org id. Note that only one of issuer or org_id may be set. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listAllUserOrgs(requestParameters: ListAllUserOrgsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListOrgsResponse>;\n    public listAllUserOrgs(requestParameters: ListAllUserOrgsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListOrgsResponse>>;\n    public listAllUserOrgs(requestParameters: ListAllUserOrgsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListOrgsResponse>>;\n    public listAllUserOrgs(requestParameters: ListAllUserOrgsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling listAllUserOrgs.');\n        }\n        const issuer = requestParameters.issuer;\n        const org_id = requestParameters.org_id;\n        const enabled = requestParameters.enabled;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (issuer !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>issuer, 'issuer');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (enabled !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>enabled, 'enabled');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListOrgsResponse>(`${this.configuration.basePath}/users/${encodeURIComponent(String(user_id))}/orgs`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListOrgsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListOrgsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Return all roles for a user\n     * Retrieves the roles (application and api) for a user granted for them by the given organisation. These permissions are recursively inherted from any groups to which the user belongs. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listAllUserRoles(requestParameters: ListAllUserRolesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<{ [key: string]: Array<string> | undefined; }>;\n    public listAllUserRoles(requestParameters: ListAllUserRolesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<{ [key: string]: Array<string> | undefined; }>>;\n    public listAllUserRoles(requestParameters: ListAllUserRolesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<{ [key: string]: Array<string> | undefined; }>>;\n    public listAllUserRoles(requestParameters: ListAllUserRolesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling listAllUserRoles.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<{ [key: string]: Array<string> | undefined; }>(`${this.configuration.basePath}/users/${encodeURIComponent(String(user_id))}/render_roles`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Get all of a user\\&#39;s multi-factor authentication challenge method configuration\n     * Get all of a user\\&#39;s multi-factor authentication challenge method configuration\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listChallengeMethods(requestParameters: ListChallengeMethodsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListMFAChallengeMethods>;\n    public listChallengeMethods(requestParameters: ListChallengeMethodsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListMFAChallengeMethods>>;\n    public listChallengeMethods(requestParameters: ListChallengeMethodsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListMFAChallengeMethods>>;\n    public listChallengeMethods(requestParameters: ListChallengeMethodsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling listChallengeMethods.');\n        }\n        const limit = requestParameters.limit;\n        const challenge_type = requestParameters.challenge_type;\n        const method_status = requestParameters.method_status;\n        const method_origin = requestParameters.method_origin;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (challenge_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>challenge_type, 'challenge_type');\n        }\n        if (method_status !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>method_status, 'method_status');\n        }\n        if (method_origin !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>method_origin, 'method_origin');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListMFAChallengeMethods>(`${this.configuration.basePath}/users/${encodeURIComponent(String(user_id))}/mfa_challenge_methods`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListMFAChallengeMethods) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListMFAChallengeMethodsImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all combined details about users\n     * Get all combined details about users\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listCombinedUserDetails(requestParameters: ListCombinedUserDetailsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListCombinedUserDetailsResponse>;\n    public listCombinedUserDetails(requestParameters: ListCombinedUserDetailsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListCombinedUserDetailsResponse>>;\n    public listCombinedUserDetails(requestParameters: ListCombinedUserDetailsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListCombinedUserDetailsResponse>>;\n    public listCombinedUserDetails(requestParameters: ListCombinedUserDetailsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const email = requestParameters.email;\n        const previous_email = requestParameters.previous_email;\n        const org_id = requestParameters.org_id;\n        const limit = requestParameters.limit;\n        const type = requestParameters.type;\n        const user_id = requestParameters.user_id;\n        const status = requestParameters.status;\n        const mfa_enrolled = requestParameters.mfa_enrolled;\n        const auto_created = requestParameters.auto_created;\n        const search_direction = requestParameters.search_direction;\n        const prefix_email_search = requestParameters.prefix_email_search;\n        const allow_partial_match = requestParameters.allow_partial_match;\n        const first_name = requestParameters.first_name;\n        const last_name = requestParameters.last_name;\n        const search_params = requestParameters.search_params;\n        const disabled_at_time = requestParameters.disabled_at_time;\n        const show_system_user = requestParameters.show_system_user;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (email !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>email, 'email');\n        }\n        if (previous_email !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>previous_email, 'previous_email');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>type, 'type');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (status) {\n            status.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'status');\n            })\n        }\n        if (mfa_enrolled !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>mfa_enrolled, 'mfa_enrolled');\n        }\n        if (auto_created !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>auto_created, 'auto_created');\n        }\n        if (search_direction !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>search_direction, 'search_direction');\n        }\n        if (prefix_email_search !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>prefix_email_search, 'prefix_email_search');\n        }\n        if (allow_partial_match !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>allow_partial_match, 'allow_partial_match');\n        }\n        if (first_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>first_name, 'first_name');\n        }\n        if (last_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>last_name, 'last_name');\n        }\n        if (search_params) {\n            search_params.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'search_params');\n            })\n        }\n        if (disabled_at_time !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>disabled_at_time, 'disabled_at_time');\n        }\n        if (show_system_user !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>show_system_user, 'show_system_user');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListCombinedUserDetailsResponse>(`${this.configuration.basePath}/v1/combined_user_details`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListCombinedUserDetailsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListCombinedUserDetailsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Query various users\\&#39; desktop access information\n     * Query various users\\&#39; desktop access information\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listDesktopAccessInfo(requestParameters: ListDesktopAccessInfoRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListUserDesktopAccessInfoResponse>;\n    public listDesktopAccessInfo(requestParameters: ListDesktopAccessInfoRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListUserDesktopAccessInfoResponse>>;\n    public listDesktopAccessInfo(requestParameters: ListDesktopAccessInfoRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListUserDesktopAccessInfoResponse>>;\n    public listDesktopAccessInfo(requestParameters: ListDesktopAccessInfoRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling listDesktopAccessInfo.');\n        }\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling listDesktopAccessInfo.');\n        }\n        const tag = requestParameters.tag;\n        const limit = requestParameters.limit;\n        const desktop_type = requestParameters.desktop_type;\n        const resource_id = requestParameters.resource_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (tag) {\n            tag.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'tag');\n            })\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (desktop_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>desktop_type, 'desktop_type');\n        }\n        if (resource_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_id, 'resource_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListUserDesktopAccessInfoResponse>(`${this.configuration.basePath}/v1/user_desktop_access_info`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListUserDesktopAccessInfoResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListUserDesktopAccessInfoResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all of a user\\&#39;s org upstream user identities\n     * Get all of a user\\&#39;s org upstream user identities\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listOrgUpstreamUserIdentity(requestParameters: ListOrgUpstreamUserIdentityRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListOrgUpstreamUserIdentitiesResponse>;\n    public listOrgUpstreamUserIdentity(requestParameters: ListOrgUpstreamUserIdentityRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListOrgUpstreamUserIdentitiesResponse>>;\n    public listOrgUpstreamUserIdentity(requestParameters: ListOrgUpstreamUserIdentityRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListOrgUpstreamUserIdentitiesResponse>>;\n    public listOrgUpstreamUserIdentity(requestParameters: ListOrgUpstreamUserIdentityRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const page_at_id = requestParameters.page_at_id;\n        const org_id = requestParameters.org_id;\n        const user_id = requestParameters.user_id;\n        const upstream_idp_id = requestParameters.upstream_idp_id;\n        const upstream_user_id = requestParameters.upstream_user_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (upstream_idp_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>upstream_idp_id, 'upstream_idp_id');\n        }\n        if (upstream_user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>upstream_user_id, 'upstream_user_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListOrgUpstreamUserIdentitiesResponse>(`${this.configuration.basePath}/v1/org_upstream_user_identities`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListOrgUpstreamUserIdentitiesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListOrgUpstreamUserIdentitiesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all org user roles\n     * Get all org user roles\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listOrgUserRoles(requestParameters: ListOrgUserRolesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListUserRolesForAnOrg>;\n    public listOrgUserRoles(requestParameters: ListOrgUserRolesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListUserRolesForAnOrg>>;\n    public listOrgUserRoles(requestParameters: ListOrgUserRolesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListUserRolesForAnOrg>>;\n    public listOrgUserRoles(requestParameters: ListOrgUserRolesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const user_id = requestParameters.user_id;\n        const limit = requestParameters.limit;\n        const offset = requestParameters.offset;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (offset !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>offset, 'offset');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListUserRolesForAnOrg>(`${this.configuration.basePath}/users/org_user_roles`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListUserRolesForAnOrg) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListUserRolesForAnOrgImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List service accounts\n     * List service accounts\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listServiceAccounts(requestParameters: ListServiceAccountsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListServiceAccountResponse>;\n    public listServiceAccounts(requestParameters: ListServiceAccountsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListServiceAccountResponse>>;\n    public listServiceAccounts(requestParameters: ListServiceAccountsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListServiceAccountResponse>>;\n    public listServiceAccounts(requestParameters: ListServiceAccountsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const user_id = requestParameters.user_id;\n        const limit = requestParameters.limit;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListServiceAccountResponse>(`${this.configuration.basePath}/v1/service_accounts`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListServiceAccountResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListServiceAccountResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Query various users\\&#39; SSH access information\n     * Query various users\\&#39; SSH access information\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listSshAccessInfo(requestParameters: ListSshAccessInfoRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListUserSSHAccessInfoResponse>;\n    public listSshAccessInfo(requestParameters: ListSshAccessInfoRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListUserSSHAccessInfoResponse>>;\n    public listSshAccessInfo(requestParameters: ListSshAccessInfoRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListUserSSHAccessInfoResponse>>;\n    public listSshAccessInfo(requestParameters: ListSshAccessInfoRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling listSshAccessInfo.');\n        }\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling listSshAccessInfo.');\n        }\n        const tag = requestParameters.tag;\n        const limit = requestParameters.limit;\n        const resource_id = requestParameters.resource_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (tag) {\n            tag.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'tag');\n            })\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (resource_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_id, 'resource_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListUserSSHAccessInfoResponse>(`${this.configuration.basePath}/v1/user_ssh_access_info`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListUserSSHAccessInfoResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListUserSSHAccessInfoResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all acknowledgements\n     * Get all acknowledgements\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listSupportRequestAcknowledgements(requestParameters: ListSupportRequestAcknowledgementsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListSupportRequestAcknowledgementsResponse>;\n    public listSupportRequestAcknowledgements(requestParameters: ListSupportRequestAcknowledgementsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListSupportRequestAcknowledgementsResponse>>;\n    public listSupportRequestAcknowledgements(requestParameters: ListSupportRequestAcknowledgementsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListSupportRequestAcknowledgementsResponse>>;\n    public listSupportRequestAcknowledgements(requestParameters: ListSupportRequestAcknowledgementsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        const org_id = requestParameters.org_id;\n        const support_request_id = requestParameters.support_request_id;\n        const expired = requestParameters.expired;\n        const limit = requestParameters.limit;\n        const page_at_id = requestParameters.page_at_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (support_request_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>support_request_id, 'support_request_id');\n        }\n        if (expired !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>expired, 'expired');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListSupportRequestAcknowledgementsResponse>(`${this.configuration.basePath}/v1/support_requests/acknowledgements`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListSupportRequestAcknowledgementsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListSupportRequestAcknowledgementsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * List support requests\n     * List support requests\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listSupportRequests(requestParameters: ListSupportRequestsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListSupportRequestResponse>;\n    public listSupportRequests(requestParameters: ListSupportRequestsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListSupportRequestResponse>>;\n    public listSupportRequests(requestParameters: ListSupportRequestsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListSupportRequestResponse>>;\n    public listSupportRequests(requestParameters: ListSupportRequestsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const user_id = requestParameters.user_id;\n        const limit = requestParameters.limit;\n        const supporting_user_org_id = requestParameters.supporting_user_org_id;\n        const expired = requestParameters.expired;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (supporting_user_org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>supporting_user_org_id, 'supporting_user_org_id');\n        }\n        if (expired !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>expired, 'expired');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListSupportRequestResponse>(`${this.configuration.basePath}/v1/support_requests`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListSupportRequestResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListSupportRequestResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all of a user\\&#39;s upstream user identities\n     * Get all of a user\\&#39;s upstream user identities\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listUpstreamUserIdentities(requestParameters: ListUpstreamUserIdentitiesRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListUpstreamUserIdentitiesResponse>;\n    public listUpstreamUserIdentities(requestParameters: ListUpstreamUserIdentitiesRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListUpstreamUserIdentitiesResponse>>;\n    public listUpstreamUserIdentities(requestParameters: ListUpstreamUserIdentitiesRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListUpstreamUserIdentitiesResponse>>;\n    public listUpstreamUserIdentities(requestParameters: ListUpstreamUserIdentitiesRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling listUpstreamUserIdentities.');\n        }\n        const limit = requestParameters.limit;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListUpstreamUserIdentitiesResponse>(`${this.configuration.basePath}/users/${encodeURIComponent(String(user_id))}/upstream_user_identities`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListUpstreamUserIdentitiesResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListUpstreamUserIdentitiesResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * retreive all access info for a user\n     * retreive all access info for a user\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listUserAccessInfo(requestParameters: ListUserAccessInfoRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UserAccessInfo>;\n    public listUserAccessInfo(requestParameters: ListUserAccessInfoRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UserAccessInfo>>;\n    public listUserAccessInfo(requestParameters: ListUserAccessInfoRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UserAccessInfo>>;\n    public listUserAccessInfo(requestParameters: ListUserAccessInfoRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling listUserAccessInfo.');\n        }\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling listUserAccessInfo.');\n        }\n        const If_None_Match = requestParameters.If_None_Match;\n        const user_access_info_list = requestParameters.user_access_info_list;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (user_access_info_list) {\n            user_access_info_list.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'user_access_info_list');\n            })\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n        if (If_None_Match !== undefined && If_None_Match !== null) {\n            headers = headers.set('If-None-Match', String(If_None_Match));\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_UserAccessInfo>(`${this.configuration.basePath}/v1/user_access_info`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UserAccessInfo) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UserAccessInfoImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Query various users\\&#39; application access information\n     * Query various users\\&#39; application access information\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listUserApplicationAccessInfo(requestParameters: ListUserApplicationAccessInfoRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListUserApplicationAccessInfoResponse>;\n    public listUserApplicationAccessInfo(requestParameters: ListUserApplicationAccessInfoRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListUserApplicationAccessInfoResponse>>;\n    public listUserApplicationAccessInfo(requestParameters: ListUserApplicationAccessInfoRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListUserApplicationAccessInfoResponse>>;\n    public listUserApplicationAccessInfo(requestParameters: ListUserApplicationAccessInfoRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling listUserApplicationAccessInfo.');\n        }\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling listUserApplicationAccessInfo.');\n        }\n        const limit = requestParameters.limit;\n        const resource_id = requestParameters.resource_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (resource_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_id, 'resource_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListUserApplicationAccessInfoResponse>(`${this.configuration.basePath}/v1/user_application_access_info`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListUserApplicationAccessInfoResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListUserApplicationAccessInfoResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Query various users\\&#39; file share access information\n     * Query various users\\&#39; file share access information\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listUserFileShareAccessInfo(requestParameters: ListUserFileShareAccessInfoRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListUserFileShareAccessInfoResponse>;\n    public listUserFileShareAccessInfo(requestParameters: ListUserFileShareAccessInfoRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListUserFileShareAccessInfoResponse>>;\n    public listUserFileShareAccessInfo(requestParameters: ListUserFileShareAccessInfoRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListUserFileShareAccessInfoResponse>>;\n    public listUserFileShareAccessInfo(requestParameters: ListUserFileShareAccessInfoRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling listUserFileShareAccessInfo.');\n        }\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling listUserFileShareAccessInfo.');\n        }\n        const tag = requestParameters.tag;\n        const limit = requestParameters.limit;\n        const resource_id = requestParameters.resource_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (tag) {\n            tag.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'tag');\n            })\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (resource_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_id, 'resource_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListUserFileShareAccessInfoResponse>(`${this.configuration.basePath}/v1/user_file_share_access_info`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListUserFileShareAccessInfoResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListUserFileShareAccessInfoResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all user guids and a unique name mapping\n     * Get all user guids and a unique name mapping\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listUserGuidMapping(requestParameters: ListUserGuidMappingRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListGuidMetadataResponse>;\n    public listUserGuidMapping(requestParameters: ListUserGuidMappingRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListGuidMetadataResponse>>;\n    public listUserGuidMapping(requestParameters: ListUserGuidMappingRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListGuidMetadataResponse>>;\n    public listUserGuidMapping(requestParameters: ListUserGuidMappingRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        const user_id = requestParameters.user_id;\n        const limit = requestParameters.limit;\n        const previous_guid = requestParameters.previous_guid;\n        const updated_since = requestParameters.updated_since;\n        const allow_partial_match = requestParameters.allow_partial_match;\n        const email = requestParameters.email;\n        const page_at_id = requestParameters.page_at_id;\n        const type = requestParameters.type;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (previous_guid !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>previous_guid, 'previous_guid');\n        }\n        if (updated_since !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>updated_since, 'updated_since');\n        }\n        if (allow_partial_match !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>allow_partial_match, 'allow_partial_match');\n        }\n        if (email !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>email, 'email');\n        }\n        if (page_at_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>page_at_id, 'page_at_id');\n        }\n        if (type) {\n            type.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'type');\n            })\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListGuidMetadataResponse>(`${this.configuration.basePath}/users/guids`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListGuidMetadataResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListGuidMetadataResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a list of all user GUIDs\n     * Get a list of all user GUIDs\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listUserGuids(requestParameters: ListUserGuidsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListUserGuidsResponse>;\n    public listUserGuids(requestParameters: ListUserGuidsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListUserGuidsResponse>>;\n    public listUserGuids(requestParameters: ListUserGuidsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListUserGuidsResponse>>;\n    public listUserGuids(requestParameters: ListUserGuidsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const updated_since = requestParameters.updated_since;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (updated_since !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>updated_since, 'updated_since');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListUserGuidsResponse>(`${this.configuration.basePath}/users_ids`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListUserGuidsResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListUserGuidsResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Query various users\\&#39; launchers access information\n     * Query various users\\&#39; launchers access information\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listUserLauncherAccessInfo(requestParameters: ListUserLauncherAccessInfoRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListUserLauncherAccessInfoResponse>;\n    public listUserLauncherAccessInfo(requestParameters: ListUserLauncherAccessInfoRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListUserLauncherAccessInfoResponse>>;\n    public listUserLauncherAccessInfo(requestParameters: ListUserLauncherAccessInfoRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListUserLauncherAccessInfoResponse>>;\n    public listUserLauncherAccessInfo(requestParameters: ListUserLauncherAccessInfoRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling listUserLauncherAccessInfo.');\n        }\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling listUserLauncherAccessInfo.');\n        }\n        const tag = requestParameters.tag;\n        const limit = requestParameters.limit;\n        const resource_id = requestParameters.resource_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (tag) {\n            tag.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'tag');\n            })\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (resource_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_id, 'resource_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListUserLauncherAccessInfoResponse>(`${this.configuration.basePath}/v1/user_launcher_access_info`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListUserLauncherAccessInfoResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListUserLauncherAccessInfoResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a list of user metadata entries\n     * Get a list of user metadata entries\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listUserMetadata(requestParameters: ListUserMetadataRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListUserMetadataResponse>;\n    public listUserMetadata(requestParameters: ListUserMetadataRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListUserMetadataResponse>>;\n    public listUserMetadata(requestParameters: ListUserMetadataRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListUserMetadataResponse>>;\n    public listUserMetadata(requestParameters: ListUserMetadataRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const user_id = requestParameters.user_id;\n        const org_id = requestParameters.org_id;\n        const app_id = requestParameters.app_id;\n        const data_type = requestParameters.data_type;\n        const recursive = requestParameters.recursive;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (app_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>app_id, 'app_id');\n        }\n        if (data_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>data_type, 'data_type');\n        }\n        if (recursive !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>recursive, 'recursive');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListUserMetadataResponse>(`${this.configuration.basePath}/v1/user_metadata`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListUserMetadataResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListUserMetadataResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Return the user\\&#39;s host permissions\n     * Return the user\\&#39;s host permissions\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listUserPermissions(requestParameters: ListUserPermissionsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HostPermissions>;\n    public listUserPermissions(requestParameters: ListUserPermissionsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<HostPermissions>>;\n    public listUserPermissions(requestParameters: ListUserPermissionsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<HostPermissions>>;\n    public listUserPermissions(requestParameters: ListUserPermissionsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling listUserPermissions.');\n        }\n        const org_id = requestParameters.org_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_HostPermissions>(`${this.configuration.basePath}/users/${encodeURIComponent(String(user_id))}/host_permissions`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _HostPermissions) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new HostPermissionsImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get a list of user requests\n     * Get a list of user requests\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listUserRequests(requestParameters: ListUserRequestsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListUserRequestInfoResponse>;\n    public listUserRequests(requestParameters: ListUserRequestsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListUserRequestInfoResponse>>;\n    public listUserRequests(requestParameters: ListUserRequestsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListUserRequestInfoResponse>>;\n    public listUserRequests(requestParameters: ListUserRequestsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const limit = requestParameters.limit;\n        const user_id = requestParameters.user_id;\n        const org_id = requestParameters.org_id;\n        const request_state = requestParameters.request_state;\n        const request_type = requestParameters.request_type;\n        const expired = requestParameters.expired;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (request_state !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>request_state, 'request_state');\n        }\n        if (request_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>request_type, 'request_type');\n        }\n        if (expired !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>expired, 'expired');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListUserRequestInfoResponse>(`${this.configuration.basePath}/v1/user_requests`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListUserRequestInfoResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListUserRequestInfoResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Query various users\\&#39; resource access information\n     * Query various users\\&#39; resource access information\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listUserResourceAccessInfo(requestParameters: ListUserResourceAccessInfoRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListUserResourceAccessInfoResponse>;\n    public listUserResourceAccessInfo(requestParameters: ListUserResourceAccessInfoRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListUserResourceAccessInfoResponse>>;\n    public listUserResourceAccessInfo(requestParameters: ListUserResourceAccessInfoRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListUserResourceAccessInfoResponse>>;\n    public listUserResourceAccessInfo(requestParameters: ListUserResourceAccessInfoRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_id = requestParameters.org_id;\n        if (org_id === null || org_id === undefined) {\n            throw new Error('Required parameter org_id was null or undefined when calling listUserResourceAccessInfo.');\n        }\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling listUserResourceAccessInfo.');\n        }\n        const resource_type = requestParameters.resource_type;\n        const include_all_resource_type = requestParameters.include_all_resource_type;\n        const tag = requestParameters.tag;\n        const limit = requestParameters.limit;\n        const resource_id = requestParameters.resource_id;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (resource_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_type, 'resource_type');\n        }\n        if (include_all_resource_type !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>include_all_resource_type, 'include_all_resource_type');\n        }\n        if (tag) {\n            tag.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'tag');\n            })\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (resource_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>resource_id, 'resource_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListUserResourceAccessInfoResponse>(`${this.configuration.basePath}/v1/user_resource_access_info`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListUserResourceAccessInfoResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListUserResourceAccessInfoResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Get all users\n     * Get all users\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public listUsers(requestParameters: ListUsersRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ListUsersResponse>;\n    public listUsers(requestParameters: ListUsersRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ListUsersResponse>>;\n    public listUsers(requestParameters: ListUsersRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ListUsersResponse>>;\n    public listUsers(requestParameters: ListUsersRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const email = requestParameters.email;\n        const previous_email = requestParameters.previous_email;\n        const provider = requestParameters.provider;\n        const org_id = requestParameters.org_id;\n        const issuer = requestParameters.issuer;\n        const limit = requestParameters.limit;\n        const type = requestParameters.type;\n        const upstream_user_id = requestParameters.upstream_user_id;\n        const upstream_idp_id = requestParameters.upstream_idp_id;\n        const status = requestParameters.status;\n        const search_direction = requestParameters.search_direction;\n        const has_roles = requestParameters.has_roles;\n        const has_resource_roles = requestParameters.has_resource_roles;\n        const prefix_email_search = requestParameters.prefix_email_search;\n        const orgless_users = requestParameters.orgless_users;\n        const allow_partial_match = requestParameters.allow_partial_match;\n        const first_name = requestParameters.first_name;\n        const last_name = requestParameters.last_name;\n        const user_id = requestParameters.user_id;\n        const search_params = requestParameters.search_params;\n        const has_application_permissions = requestParameters.has_application_permissions;\n        const application_permissions = requestParameters.application_permissions;\n        const disabled_at_time = requestParameters.disabled_at_time;\n        const has_resource_or_application_roles = requestParameters.has_resource_or_application_roles;\n        const show_system_user = requestParameters.show_system_user;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (email !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>email, 'email');\n        }\n        if (previous_email !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>previous_email, 'previous_email');\n        }\n        if (provider !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>provider, 'provider');\n        }\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n        if (issuer !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>issuer, 'issuer');\n        }\n        if (limit !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>limit, 'limit');\n        }\n        if (type) {\n            type.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'type');\n            })\n        }\n        if (upstream_user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>upstream_user_id, 'upstream_user_id');\n        }\n        if (upstream_idp_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>upstream_idp_id, 'upstream_idp_id');\n        }\n        if (status) {\n            status.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'status');\n            })\n        }\n        if (search_direction !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>search_direction, 'search_direction');\n        }\n        if (has_roles !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>has_roles, 'has_roles');\n        }\n        if (has_resource_roles !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>has_resource_roles, 'has_resource_roles');\n        }\n        if (prefix_email_search !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>prefix_email_search, 'prefix_email_search');\n        }\n        if (orgless_users !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>orgless_users, 'orgless_users');\n        }\n        if (allow_partial_match !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>allow_partial_match, 'allow_partial_match');\n        }\n        if (first_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>first_name, 'first_name');\n        }\n        if (last_name !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>last_name, 'last_name');\n        }\n        if (user_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>user_id, 'user_id');\n        }\n        if (search_params) {\n            search_params.forEach((element) => {\n                queryParameters = this.addToHttpParams(queryParameters,\n                  <any>element, 'search_params');\n            })\n        }\n        if (has_application_permissions !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>has_application_permissions, 'has_application_permissions');\n        }\n        if (application_permissions !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>application_permissions, 'application_permissions');\n        }\n        if (disabled_at_time !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>disabled_at_time, 'disabled_at_time');\n        }\n        if (has_resource_or_application_roles !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>has_resource_or_application_roles, 'has_resource_or_application_roles');\n        }\n        if (show_system_user !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>show_system_user, 'show_system_user');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.get<_ListUsersResponse>(`${this.configuration.basePath}/users`,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ListUsersResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ListUsersResponseImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a user\\&#39;s multi-factor authentication challenge method\n     * Update a user\\&#39;s multi-factor authentication challenge method\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceChallengeMethod(requestParameters: ReplaceChallengeMethodRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<MFAChallengeMethod>;\n    public replaceChallengeMethod(requestParameters: ReplaceChallengeMethodRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<MFAChallengeMethod>>;\n    public replaceChallengeMethod(requestParameters: ReplaceChallengeMethodRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<MFAChallengeMethod>>;\n    public replaceChallengeMethod(requestParameters: ReplaceChallengeMethodRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling replaceChallengeMethod.');\n        }\n        const challenge_method_id = requestParameters.challenge_method_id;\n        if (challenge_method_id === null || challenge_method_id === undefined) {\n            throw new Error('Required parameter challenge_method_id was null or undefined when calling replaceChallengeMethod.');\n        }\n        const MFAChallengeMethod = requestParameters.MFAChallengeMethod;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_MFAChallengeMethod>(`${this.configuration.basePath}/users/${encodeURIComponent(String(user_id))}/mfa_challenge_methods/${encodeURIComponent(String(challenge_method_id))}`,\n                    MFAChallengeMethod,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _MFAChallengeMethod) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new MFAChallengeMethodImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update an org upstream user identity\n     * Update an org upstream user identity\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceOrgUpstreamUserIdentity(requestParameters: ReplaceOrgUpstreamUserIdentityRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<OrgUpstreamUserIdentity>;\n    public replaceOrgUpstreamUserIdentity(requestParameters: ReplaceOrgUpstreamUserIdentityRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<OrgUpstreamUserIdentity>>;\n    public replaceOrgUpstreamUserIdentity(requestParameters: ReplaceOrgUpstreamUserIdentityRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<OrgUpstreamUserIdentity>>;\n    public replaceOrgUpstreamUserIdentity(requestParameters: ReplaceOrgUpstreamUserIdentityRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const org_upstream_user_identity_id = requestParameters.org_upstream_user_identity_id;\n        if (org_upstream_user_identity_id === null || org_upstream_user_identity_id === undefined) {\n            throw new Error('Required parameter org_upstream_user_identity_id was null or undefined when calling replaceOrgUpstreamUserIdentity.');\n        }\n        const OrgUpstreamUserIdentity = requestParameters.OrgUpstreamUserIdentity;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_OrgUpstreamUserIdentity>(`${this.configuration.basePath}/v1/org_upstream_user_identities/${encodeURIComponent(String(org_upstream_user_identity_id))}`,\n                    OrgUpstreamUserIdentity,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _OrgUpstreamUserIdentity) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new OrgUpstreamUserIdentityImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a service account\n     * Update a service account\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceServiceAccount(requestParameters: ReplaceServiceAccountRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<ServiceAccount>;\n    public replaceServiceAccount(requestParameters: ReplaceServiceAccountRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<ServiceAccount>>;\n    public replaceServiceAccount(requestParameters: ReplaceServiceAccountRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<ServiceAccount>>;\n    public replaceServiceAccount(requestParameters: ReplaceServiceAccountRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const service_account_id = requestParameters.service_account_id;\n        if (service_account_id === null || service_account_id === undefined) {\n            throw new Error('Required parameter service_account_id was null or undefined when calling replaceServiceAccount.');\n        }\n        const ServiceAccount = requestParameters.ServiceAccount;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_ServiceAccount>(`${this.configuration.basePath}/v1/service_accounts/${encodeURIComponent(String(service_account_id))}`,\n                    ServiceAccount,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _ServiceAccount) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new ServiceAccountImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update an upstream user identity\n     * Update an upstream user identity\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceUpstreamUserIdentity(requestParameters: ReplaceUpstreamUserIdentityRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UpstreamUserIdentity>;\n    public replaceUpstreamUserIdentity(requestParameters: ReplaceUpstreamUserIdentityRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UpstreamUserIdentity>>;\n    public replaceUpstreamUserIdentity(requestParameters: ReplaceUpstreamUserIdentityRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UpstreamUserIdentity>>;\n    public replaceUpstreamUserIdentity(requestParameters: ReplaceUpstreamUserIdentityRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling replaceUpstreamUserIdentity.');\n        }\n        const upstream_user_identity_id = requestParameters.upstream_user_identity_id;\n        if (upstream_user_identity_id === null || upstream_user_identity_id === undefined) {\n            throw new Error('Required parameter upstream_user_identity_id was null or undefined when calling replaceUpstreamUserIdentity.');\n        }\n        const UpstreamUserIdentity = requestParameters.UpstreamUserIdentity;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_UpstreamUserIdentity>(`${this.configuration.basePath}/users/${encodeURIComponent(String(user_id))}/upstream_user_identities/${encodeURIComponent(String(upstream_user_identity_id))}`,\n                    UpstreamUserIdentity,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UpstreamUserIdentity) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UpstreamUserIdentityImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create or update a user\n     * Create or update a user\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceUser(requestParameters: ReplaceUserRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<User>;\n    public replaceUser(requestParameters: ReplaceUserRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<User>>;\n    public replaceUser(requestParameters: ReplaceUserRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<User>>;\n    public replaceUser(requestParameters: ReplaceUserRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling replaceUser.');\n        }\n        const User = requestParameters.User;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_User>(`${this.configuration.basePath}/users/${encodeURIComponent(String(user_id))}`,\n                    User,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _User) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UserImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update an user metadata entry.\n     * Update an user metadata entry.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceUserMetadata(requestParameters: ReplaceUserMetadataRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UserMetadata>;\n    public replaceUserMetadata(requestParameters: ReplaceUserMetadataRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UserMetadata>>;\n    public replaceUserMetadata(requestParameters: ReplaceUserMetadataRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UserMetadata>>;\n    public replaceUserMetadata(requestParameters: ReplaceUserMetadataRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const metadata_id = requestParameters.metadata_id;\n        if (metadata_id === null || metadata_id === undefined) {\n            throw new Error('Required parameter metadata_id was null or undefined when calling replaceUserMetadata.');\n        }\n        const UserMetadata = requestParameters.UserMetadata;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_UserMetadata>(`${this.configuration.basePath}/v1/user_metadata/${encodeURIComponent(String(metadata_id))}`,\n                    UserMetadata,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UserMetadata) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UserMetadataImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update an user request. Note this method ignores the state parameter.\n     * Update an user request. Note this method ignores the state parameter.\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceUserRequest(requestParameters: ReplaceUserRequestRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UserRequestInfo>;\n    public replaceUserRequest(requestParameters: ReplaceUserRequestRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UserRequestInfo>>;\n    public replaceUserRequest(requestParameters: ReplaceUserRequestRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UserRequestInfo>>;\n    public replaceUserRequest(requestParameters: ReplaceUserRequestRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_request_id = requestParameters.user_request_id;\n        if (user_request_id === null || user_request_id === undefined) {\n            throw new Error('Required parameter user_request_id was null or undefined when calling replaceUserRequest.');\n        }\n        const UserRequestInfo = requestParameters.UserRequestInfo;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_UserRequestInfo>(`${this.configuration.basePath}/v1/user_requests/${encodeURIComponent(String(user_request_id))}`,\n                    UserRequestInfo,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UserRequestInfo) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UserRequestInfoImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Create or update a user role\n     * Create or update a user role\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public replaceUserRole(requestParameters: ReplaceUserRoleRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public replaceUserRole(requestParameters: ReplaceUserRoleRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public replaceUserRole(requestParameters: ReplaceUserRoleRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public replaceUserRole(requestParameters: ReplaceUserRoleRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling replaceUserRole.');\n        }\n        const org_id = requestParameters.org_id;\n        const ReplaceUserRoleRequest = requestParameters.ReplaceUserRoleRequest;\n\n        let queryParameters = new HttpParams({encoder: this.encoder});\n        if (org_id !== undefined) {\n          queryParameters = this.addToHttpParams(queryParameters,\n            <any>org_id, 'org_id');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                let httpQueryParameters = queryParameters;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<any>(`${this.configuration.basePath}/users/${encodeURIComponent(String(user_id))}/roles`,\n                    ReplaceUserRoleRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        params: httpQueryParameters,\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * Resets a user\\&#39;s identity if allowed\n     * Resets a user\\&#39;s identity if they belong to a single organisation, allowing a change of their core identity information. \n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public resetUserIdentity(requestParameters: ResetUserIdentityRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<User>;\n    public resetUserIdentity(requestParameters: ResetUserIdentityRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<User>>;\n    public resetUserIdentity(requestParameters: ResetUserIdentityRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<User>>;\n    public resetUserIdentity(requestParameters: ResetUserIdentityRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling resetUserIdentity.');\n        }\n        const ResetUserIdentityRequest = requestParameters.ResetUserIdentityRequest;\n        if (ResetUserIdentityRequest === null || ResetUserIdentityRequest === undefined) {\n            throw new Error('Required parameter ResetUserIdentityRequest was null or undefined when calling resetUserIdentity.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_User>(`${this.configuration.basePath}/users/${encodeURIComponent(String(user_id))}/reset_user_identity`,\n                    ResetUserIdentityRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _User) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UserImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Resets a user\\&#39;s multi-factor authentication method\n     * Resets a user\\&#39;s multi-factor authentication method\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public resetUserMfaChallengeMethods(requestParameters: ResetUserMfaChallengeMethodsRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<any>;\n    public resetUserMfaChallengeMethods(requestParameters: ResetUserMfaChallengeMethodsRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpResponse<any>>;\n    public resetUserMfaChallengeMethods(requestParameters: ResetUserMfaChallengeMethodsRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: undefined}): Observable<HttpEvent<any>>;\n    public resetUserMfaChallengeMethods(requestParameters: ResetUserMfaChallengeMethodsRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: undefined}): Observable<any> {\n        const user_id = requestParameters.user_id;\n        if (user_id === null || user_id === undefined) {\n            throw new Error('Required parameter user_id was null or undefined when calling resetUserMfaChallengeMethods.');\n        }\n        const ResetMFAChallengeMethod = requestParameters.ResetMFAChallengeMethod;\n        if (ResetMFAChallengeMethod === null || ResetMFAChallengeMethod === undefined) {\n            throw new Error('Required parameter ResetMFAChallengeMethod was null or undefined when calling resetUserMfaChallengeMethods.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<any>(`${this.configuration.basePath}/users/${encodeURIComponent(String(user_id))}/reset_mfa_challenge_methods`,\n                    ResetMFAChallengeMethod,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n        );\n    }\n\n    /**\n     * update an org upstream user identity\n     * Create an org upstream user identity\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public updateOrgUpstreamUserIdentity(requestParameters: UpdateOrgUpstreamUserIdentityRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<OrgUpstreamUserIdentity>;\n    public updateOrgUpstreamUserIdentity(requestParameters: UpdateOrgUpstreamUserIdentityRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<OrgUpstreamUserIdentity>>;\n    public updateOrgUpstreamUserIdentity(requestParameters: UpdateOrgUpstreamUserIdentityRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<OrgUpstreamUserIdentity>>;\n    public updateOrgUpstreamUserIdentity(requestParameters: UpdateOrgUpstreamUserIdentityRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const OrgUpstreamUserIdentity = requestParameters.OrgUpstreamUserIdentity;\n        if (OrgUpstreamUserIdentity === null || OrgUpstreamUserIdentity === undefined) {\n            throw new Error('Required parameter OrgUpstreamUserIdentity was null or undefined when calling updateOrgUpstreamUserIdentity.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_OrgUpstreamUserIdentity>(`${this.configuration.basePath}/v1/org_upstream_user_identities`,\n                    OrgUpstreamUserIdentity,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _OrgUpstreamUserIdentity) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new OrgUpstreamUserIdentityImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Update a support request\\&#39;s expiry\n     * Update a support request\\&#39;s expiry\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public updateSupportRequest(requestParameters: UpdateSupportRequestRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<SupportRequest>;\n    public updateSupportRequest(requestParameters: UpdateSupportRequestRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<SupportRequest>>;\n    public updateSupportRequest(requestParameters: UpdateSupportRequestRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<SupportRequest>>;\n    public updateSupportRequest(requestParameters: UpdateSupportRequestRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const support_request_id = requestParameters.support_request_id;\n        if (support_request_id === null || support_request_id === undefined) {\n            throw new Error('Required parameter support_request_id was null or undefined when calling updateSupportRequest.');\n        }\n        const SupportRequest = requestParameters.SupportRequest;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.put<_SupportRequest>(`${this.configuration.basePath}/v1/support_requests/${encodeURIComponent(String(support_request_id))}`,\n                    SupportRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _SupportRequest) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new SupportRequestImpl(response)\n            })\n        );\n    }\n\n    /**\n     * Uses the state parameter in the body to apply the action to the request\n     * Uses the state parameter in the body to apply the action to the request\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public updateUserRequest(requestParameters: UpdateUserRequestRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<UserRequestInfo>;\n    public updateUserRequest(requestParameters: UpdateUserRequestRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<UserRequestInfo>>;\n    public updateUserRequest(requestParameters: UpdateUserRequestRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<UserRequestInfo>>;\n    public updateUserRequest(requestParameters: UpdateUserRequestRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const user_request_id = requestParameters.user_request_id;\n        if (user_request_id === null || user_request_id === undefined) {\n            throw new Error('Required parameter user_request_id was null or undefined when calling updateUserRequest.');\n        }\n        const UserRequestInfo = requestParameters.UserRequestInfo;\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n            const credName: string = 'token-valid';\n        return this.getAuth(credName, headers).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                // authentication (token-valid) required\n                if (credential) {\n                    httpHeaders = httpHeaders.set('Authorization', credential);\n                }\n\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_UserRequestInfo>(`${this.configuration.basePath}/v1/user_requests/${encodeURIComponent(String(user_request_id))}`,\n                    UserRequestInfo,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _UserRequestInfo) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new UserRequestInfoImpl(response)\n            })\n        );\n    }\n\n}\n","/**\n * Agilicus API\n * Agilicus is API-first. Modern software is controlled by other software, is open, is available for you to use the way you want, securely, simply.  The OpenAPI Specification in YAML format is available on [www](https://www.agilicus.com/www/api/agilicus-openapi.yaml) for importing to other tools.  A rendered, online viewable and usable version of this specification is available at [api](https://www.agilicus.com/api). You may try the API inline directly in the web page. To do so, first obtain an Authentication Token (the simplest way is to install the Python SDK, and then run `agilicus-cli --issuer https://MYISSUER get-token`). You will need an org-id for most calls (and can obtain from `agilicus-cli --issuer https://MYISSUER list-orgs`). The `MYISSUER` will typically be `auth.MYDOMAIN`, and you will see it as you sign-in to the administrative UI.  This API releases on Bearer-Token authentication. To obtain a valid bearer token you will need to Authenticate to an Issuer with OpenID Connect (a superset of OAUTH2).  Your \\\"issuer\\\" will look like https://auth.MYDOMAIN. For example, when you signed-up, if you said \\\"use my own domain name\\\" and assigned a CNAME of cloud.example.com, then your issuer would be https://auth.cloud.example.com.  If you selected \\\"use an Agilicus supplied domain name\\\", your issuer would look like https://auth.myorg.agilicus.cloud.  For test purposes you can use our [Python SDK](https://pypi.org/project/agilicus/) and run `agilicus-cli --issuer https://auth.MYDOMAIN get-token`.  This API may be used in any language runtime that supports OpenAPI 3.0, or, you may use our [Python SDK](https://pypi.org/project/agilicus/), our [Typescript SDK](https://www.npmjs.com/package/@agilicus/angular), or our [Golang SDK](https://git.agilicus.com/pub/sdk-go).  100% of the activities in our system our API-driven, from our web-admin, through our progressive web applications, to all internals: there is nothing that is not accessible.  For more information, see [developer resources](https://www.agilicus.com/developer). \n *\n * The version of the OpenAPI document: 2025.12.16\n * Contact: dev@agilicus.com\n *\n * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).\n * https://openapi-generator.tech\n * Do not edit the class manually.\n */\n/* tslint:disable:no-unused-variable member-ordering */\n\nimport { Inject, Injectable, Optional }                      from '@angular/core';\nimport { HttpClient, HttpHeaders, HttpParams,\n         HttpResponse, HttpEvent, HttpParameterCodec }       from '@angular/common/http';\nimport { CustomHttpParameterCodec }                          from '../encoder';\nimport { Observable }                                        from 'rxjs';\nimport { concatMap, map }                                    from 'rxjs/operators'\nimport { of, from }                                              from 'rxjs'\n\nimport * as jsonpatch from 'fast-json-patch';\nimport { _WhoamiRequest, WhoamiRequest, WhoamiRequestImpl } from '../model/models';\nimport { _WhoamiResponse, WhoamiResponse, WhoamiResponseImpl } from '../model/models';\n\nimport { BASE_PATH, COLLECTION_FORMATS }                     from '../variables';\nimport { Configuration }                                     from '../configuration';\nimport {\n    WhoamiServiceInterface,\n    CreateWhoamiRequestParams\n} from './whoami.serviceInterface';\n\n\n\n@Injectable({\n  providedIn: 'root'\n})\nexport class WhoamiService implements WhoamiServiceInterface {\n\n    protected basePath = 'https://api.agilicus.com';\n    public defaultHeaders = new HttpHeaders();\n    public configuration = new Configuration();\n    public encoder: HttpParameterCodec;\n\n    constructor(protected httpClient: HttpClient, @Optional()@Inject(BASE_PATH) basePath: string, @Optional() configuration: Configuration) {\n        if (configuration) {\n            this.configuration = configuration;\n        }\n        if (typeof this.configuration.basePath !== 'string') {\n            if (typeof basePath !== 'string') {\n                basePath = this.basePath;\n            }\n            this.configuration.basePath = basePath;\n        }\n        this.encoder = this.configuration.encoder || new CustomHttpParameterCodec();\n    }\n\n    private getAuth(credName: string|undefined, headers: HttpHeaders): Observable<string|undefined> {\n        // Only set the auth header if it hasn't been overridden by the client.\n        const authHeader = headers.get(\"Authorization\");\n        if (authHeader) {\n            return of(authHeader);\n        }\n\n        if (credName === undefined) {\n            return of(undefined);\n        }\n\n        return  from(this.configuration.lookupCredential(credName)).pipe(map((cred) => {\n            if (!cred) {\n                return cred;\n            }\n\n            return `Bearer ${cred}`;\n         }));\n    }\n\n\n    private addToHttpParams(httpParams: HttpParams, value: any, key?: string): HttpParams {\n        if (typeof value === \"object\" && value instanceof Date === false) {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value);\n        } else {\n            httpParams = this.addToHttpParamsRecursive(httpParams, value, key);\n        }\n        return httpParams;\n    }\n\n    private addToHttpParamsRecursive(httpParams: HttpParams, value?: any, key?: string): HttpParams {\n        if (typeof value === \"object\") {\n            if (Array.isArray(value)) {\n                (value as any[]).forEach( elem => httpParams = this.addToHttpParamsRecursive(httpParams, elem, key));\n            } else if (value instanceof Date) {\n                if (key != null) {\n                    httpParams = httpParams.append(key,\n                        (value as Date).toISOString().substr(0, 10));\n                } else {\n                   throw Error(\"key may not be null if value is Date\");\n                }\n            } else {\n                Object.keys(value).forEach( k => httpParams = this.addToHttpParamsRecursive(\n                    httpParams, value[k], key != null ? `${key}.${k}` : k));\n            }\n        } else if (key != null) {\n            httpParams = httpParams.append(key, value);\n        } else {\n            throw Error(\"key may not be null if value is not object or array\");\n        }\n        return httpParams;\n    }\n\n    /**\n     * login through whoami\n     * login through whoami\n     * @param requestParameters\n     * @param observe set whether or not to return the data Observable as the body, response or events. defaults to returning the body.\n     * @param reportProgress flag to report request and response progress.\n     */\n    public createWhoami(requestParameters: CreateWhoamiRequestParams, observe?: 'body', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<WhoamiResponse>;\n    public createWhoami(requestParameters: CreateWhoamiRequestParams, observe?: 'response', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpResponse<WhoamiResponse>>;\n    public createWhoami(requestParameters: CreateWhoamiRequestParams, observe?: 'events', extraHeaders?: HttpHeaders, reportProgress?: boolean, options?: {httpHeaderAccept?: 'application/json'}): Observable<HttpEvent<WhoamiResponse>>;\n    public createWhoami(requestParameters: CreateWhoamiRequestParams, observe: any = 'body', extraHeaders?: HttpHeaders, reportProgress: boolean = false, options?: {httpHeaderAccept?: 'application/json'}): Observable<any> {\n        const X_Request_Id = requestParameters.X_Request_Id;\n        if (X_Request_Id === null || X_Request_Id === undefined) {\n            throw new Error('Required parameter X_Request_Id was null or undefined when calling createWhoami.');\n        }\n        const WhoamiRequest = requestParameters.WhoamiRequest;\n        if (WhoamiRequest === null || WhoamiRequest === undefined) {\n            throw new Error('Required parameter WhoamiRequest was null or undefined when calling createWhoami.');\n        }\n\n        let headers = this.defaultHeaders;\n        if (!!extraHeaders) {\n            extraHeaders.keys().forEach((key) => {\n                const values = extraHeaders.getAll(key);\n                headers = headers.append(key, values);\n            });\n        }\n        if (X_Request_Id !== undefined && X_Request_Id !== null) {\n            headers = headers.set('X-Request-Id', String(X_Request_Id));\n        }\n\n        let httpHeaderAcceptSelected: string | undefined = options && options.httpHeaderAccept;\n        if (httpHeaderAcceptSelected === undefined) {\n            // to determine the Accept header\n            const httpHeaderAccepts: string[] = [\n                'application/json'\n            ];\n            httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);\n        }\n        if (httpHeaderAcceptSelected !== undefined) {\n            headers = headers.set('Accept', httpHeaderAcceptSelected);\n        }\n\n\n        // to determine the Content-Type header\n        const consumes: string[] = [\n            'application/json'\n        ];\n        const httpContentTypeSelected: string | undefined = this.configuration.selectHeaderContentType(consumes);\n        if (httpContentTypeSelected !== undefined) {\n            headers = headers.set('Content-Type', httpContentTypeSelected);\n        }\n\n        let responseType_: 'text' | 'json' = 'json';\n        if(httpHeaderAcceptSelected && httpHeaderAcceptSelected.startsWith('text')) {\n            responseType_ = 'text';\n        }\n\n        return of(undefined).pipe(\n            map((credential:string|undefined) => {\n                let httpHeaders = headers\n                const httpQueryParameters: HttpParams|undefined = undefined;\n                return [httpHeaders, httpQueryParameters];\n            }),\n            concatMap(([httpHeaders, httpQueryParameters]:[HttpHeaders, HttpParams|undefined]) => {\n                return this.httpClient.post<_WhoamiResponse>(`${this.configuration.basePath}/v1/whoami`,\n                    WhoamiRequest,\n                    // Cast to object to force proper overload resolution.\n                    <Object>{\n                        responseType: <any>responseType_,\n                        withCredentials: this.configuration.withCredentials,\n                        headers: httpHeaders,\n                        observe: observe,\n                        reportProgress: reportProgress\n                    }\n                )\n            }),\n            map((response: _WhoamiResponse) => {\n                if (response === undefined) {\n                    return response;\n                }\n                return new WhoamiResponseImpl(response)\n            })\n        );\n    }\n\n}\n","export * from './applicationServices.service';\nimport { ApplicationServicesService } from './applicationServices.service';\nexport * from './applicationServices.serviceInterface'\nexport * from './applications.service';\nimport { ApplicationsService } from './applications.service';\nexport * from './applications.serviceInterface'\nexport * from './audits.service';\nimport { AuditsService } from './audits.service';\nexport * from './audits.serviceInterface'\nexport * from './billing.service';\nimport { BillingService } from './billing.service';\nexport * from './billing.serviceInterface'\nexport * from './catalogues.service';\nimport { CataloguesService } from './catalogues.service';\nexport * from './catalogues.serviceInterface'\nexport * from './certificates.service';\nimport { CertificatesService } from './certificates.service';\nexport * from './certificates.serviceInterface'\nexport * from './challenges.service';\nimport { ChallengesService } from './challenges.service';\nexport * from './challenges.serviceInterface'\nexport * from './connectors.service';\nimport { ConnectorsService } from './connectors.service';\nexport * from './connectors.serviceInterface'\nexport * from './credentials.service';\nimport { CredentialsService } from './credentials.service';\nexport * from './credentials.serviceInterface'\nexport * from './deployments.service';\nimport { DeploymentsService } from './deployments.service';\nexport * from './deployments.serviceInterface'\nexport * from './diagnostics.service';\nimport { DiagnosticsService } from './diagnostics.service';\nexport * from './diagnostics.serviceInterface'\nexport * from './features.service';\nimport { FeaturesService } from './features.service';\nexport * from './features.serviceInterface'\nexport * from './files.service';\nimport { FilesService } from './files.service';\nexport * from './files.serviceInterface'\nexport * from './groups.service';\nimport { GroupsService } from './groups.service';\nexport * from './groups.serviceInterface'\nexport * from './hosts.service';\nimport { HostsService } from './hosts.service';\nexport * from './hosts.serviceInterface'\nexport * from './issuers.service';\nimport { IssuersService } from './issuers.service';\nexport * from './issuers.serviceInterface'\nexport * from './labels.service';\nimport { LabelsService } from './labels.service';\nexport * from './labels.serviceInterface'\nexport * from './launchers.service';\nimport { LaunchersService } from './launchers.service';\nexport * from './launchers.serviceInterface'\nexport * from './licensing.service';\nimport { LicensingService } from './licensing.service';\nexport * from './licensing.serviceInterface'\nexport * from './lookups.service';\nimport { LookupsService } from './lookups.service';\nexport * from './lookups.serviceInterface'\nexport * from './messages.service';\nimport { MessagesService } from './messages.service';\nexport * from './messages.serviceInterface'\nexport * from './metrics.service';\nimport { MetricsService } from './metrics.service';\nexport * from './metrics.serviceInterface'\nexport * from './organisations.service';\nimport { OrganisationsService } from './organisations.service';\nexport * from './organisations.serviceInterface'\nexport * from './permissions.service';\nimport { PermissionsService } from './permissions.service';\nexport * from './permissions.serviceInterface'\nexport * from './policy.service';\nimport { PolicyService } from './policy.service';\nexport * from './policy.serviceInterface'\nexport * from './policyConfig.service';\nimport { PolicyConfigService } from './policyConfig.service';\nexport * from './policyConfig.serviceInterface'\nexport * from './policyTemplates.service';\nimport { PolicyTemplatesService } from './policyTemplates.service';\nexport * from './policyTemplates.serviceInterface'\nexport * from './regions.service';\nimport { RegionsService } from './regions.service';\nexport * from './regions.serviceInterface'\nexport * from './resources.service';\nimport { ResourcesService } from './resources.service';\nexport * from './resources.serviceInterface'\nexport * from './rules.service';\nimport { RulesService } from './rules.service';\nexport * from './rules.serviceInterface'\nexport * from './tokens.service';\nimport { TokensService } from './tokens.service';\nexport * from './tokens.serviceInterface'\nexport * from './trustedCerts.service';\nimport { TrustedCertsService } from './trustedCerts.service';\nexport * from './trustedCerts.serviceInterface'\nexport * from './users.service';\nimport { UsersService } from './users.service';\nexport * from './users.serviceInterface'\nexport * from './whoami.service';\nimport { WhoamiService } from './whoami.service';\nexport * from './whoami.serviceInterface'\nexport const APIS = [ApplicationServicesService, ApplicationsService, AuditsService, BillingService, CataloguesService, CertificatesService, ChallengesService, ConnectorsService, CredentialsService, DeploymentsService, DiagnosticsService, FeaturesService, FilesService, GroupsService, HostsService, IssuersService, LabelsService, LaunchersService, LicensingService, LookupsService, MessagesService, MetricsService, OrganisationsService, PermissionsService, PolicyService, PolicyConfigService, PolicyTemplatesService, RegionsService, ResourcesService, RulesService, TokensService, TrustedCertsService, UsersService, WhoamiService];\n","import { NgModule, ModuleWithProviders, SkipSelf, Optional } from '@angular/core';\nimport { Configuration } from './configuration';\nimport { HttpClient } from '@angular/common/http';\n\nimport { ApplicationServicesService } from './api/applicationServices.service';\nimport { ApplicationsService } from './api/applications.service';\nimport { AuditsService } from './api/audits.service';\nimport { BillingService } from './api/billing.service';\nimport { CataloguesService } from './api/catalogues.service';\nimport { CertificatesService } from './api/certificates.service';\nimport { ChallengesService } from './api/challenges.service';\nimport { ConnectorsService } from './api/connectors.service';\nimport { CredentialsService } from './api/credentials.service';\nimport { DeploymentsService } from './api/deployments.service';\nimport { DiagnosticsService } from './api/diagnostics.service';\nimport { FeaturesService } from './api/features.service';\nimport { FilesService } from './api/files.service';\nimport { GroupsService } from './api/groups.service';\nimport { HostsService } from './api/hosts.service';\nimport { IssuersService } from './api/issuers.service';\nimport { LabelsService } from './api/labels.service';\nimport { LaunchersService } from './api/launchers.service';\nimport { LicensingService } from './api/licensing.service';\nimport { LookupsService } from './api/lookups.service';\nimport { MessagesService } from './api/messages.service';\nimport { MetricsService } from './api/metrics.service';\nimport { OrganisationsService } from './api/organisations.service';\nimport { PermissionsService } from './api/permissions.service';\nimport { PolicyService } from './api/policy.service';\nimport { PolicyConfigService } from './api/policyConfig.service';\nimport { PolicyTemplatesService } from './api/policyTemplates.service';\nimport { RegionsService } from './api/regions.service';\nimport { ResourcesService } from './api/resources.service';\nimport { RulesService } from './api/rules.service';\nimport { TokensService } from './api/tokens.service';\nimport { TrustedCertsService } from './api/trustedCerts.service';\nimport { UsersService } from './api/users.service';\nimport { WhoamiService } from './api/whoami.service';\n\n@NgModule({\n  imports:      [],\n  declarations: [],\n  exports:      [],\n  providers: []\n})\nexport class ApiModule {\n    public static forRoot(configurationFactory: () => Configuration): ModuleWithProviders<ApiModule> {\n        return {\n            ngModule: ApiModule,\n            providers: [ { provide: Configuration, useFactory: configurationFactory } ]\n        };\n    }\n\n    constructor( @Optional() @SkipSelf() parentModule: ApiModule,\n                 @Optional() http: HttpClient) {\n        if (parentModule) {\n            throw new Error('ApiModule is already loaded. Import in your base AppModule only.');\n        }\n        if (!http) {\n            throw new Error('You need to import the HttpClientModule in your AppModule! \\n' +\n            'See also https://github.com/angular/angular/issues/20575');\n        }\n    }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i2.Configuration"],"mappings":"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"}